传统的网络编程思路和方法

网络编程需要客户端和服务端:

服务端的步奏如下:

1. 创建 ServerSocket

2. 绑定端口ServerSocket.bind(8899)

3. Socket socket=serversocket.accept()

注意: 这里accept方法会阻塞,等待客户端的连接,如果有客户端的连接,就返回一个socket的对象。这里面的代码有问题,如果步骤123都放在同一个线程中执行,那么就只能接受一个客户端的请求。等一个客户端的请求结束之后,才会处理这个客户端的请求。所以这里的代码不能这么写,针对步奏三。

我们常见的写法是这样的。

while(true){

Socket socket=serversocket.accept()

new thread(socket){

socket.getInputstream();

}

}

//这样的一个好处就是一个请求回来兴起了一个线程去处理,8899端口又可以接受新的连接。但这种方法很明显,它的线程数量是有限的。并不能无限创建线程。

上边三部可以简写为SBA(Server Socket, Bind, Accept傻逼A,便于记忆)

客户端:

那客户端怎么写

客户端的写法是

Socket =new Socket(localhost, 8899);

socket.connect()

客户端一般不使用多线程。,当然客户端如果需要连接多个主机也可以使用。这样客户端在向主机8899端口发起连接以后,主机的socket在自己空闲的端口中任选一个和客户端进行通信,这样一个socket链接就建立成功,后续的通信就可以正常进行,客户端和服务端分别采用getInputstream()。来获取客户端发送的数据流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容