首先。我也是一个刚开始学java socket编程。
大家可以来借鉴一点入门级的经验。
先介绍一些基本常识。socket是基于TCP/IP协议的。通过IP协议找到目的主机,在通过TCP协议完成数据链路的联通。然后开始收发数据。(当然,个人理解。若有不对,敬请指正)
socket的输入流是阻塞式的。在没有接受到数据之前会阻塞线程。
在java中
新建一个服务器端socket:
ServerSocket serversocket = new ServerSocket(Port);//指定端口
新建一个客户端socket:
Socket socket = new Socket(“hostname”,PORT);//需要访问的主机IP和端口。
好啦。开始进入主题。
我理解中的socket 1.0:就像是半条水管。为什么说是半条呢?因为。客户端的soket必须要和服务器端的socket进行连接才能进行通信。
看起来是不是很有道理的样子。
然而实际上。在我理解中的socket 2.0是两根半条水管。“我擦,你TM刚刚不是说只有半条,现在尼玛两根半条又是什么鬼!!”。
淡定~~
socket分为输入流和输出流。有进有出嘛~~~进进出出。 吭吭。别想歪了。
socket的输入流和输出流,只有分工合作。才能互不影响。客户端的输入流负责接收服务端的输出流。服务端的输入流负责客户端的输入流。
这里就是说需要用到多线程。
当然如果不用多线程。也不是不可以通信。只不过由于socket的输入流是阻塞式的。他会阻塞线程。所以情况就是只能一发一收。做不到连续发,连续收。
好啦。最终完整版。我理解中的socket 3.0:客户端和服务器端 的socket通过指定IP和端口。进行连接。连接完成。进行收发 socket(数据)。这个socket中包含输入流和输出流。
还是不懂的话。我还是做个好人给你们贴上代码吧。
package Client;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
pub