在服务器端,socket()
返回的套接字用于监听(listen)和接受(accept),这个套接字不能用于与客户端之间发送和接收数据。
accept()
接受一个客户端的连接请求,并返回一个新的套接字,不同于以上socket()
返回的用于监听和接受客户端的连接请求的套接字;
与此客户端通信是通过这个新的套接字上发送和接收数据来完成的。
每个连接进来的客户端,都会通过accept函数
返回一个不同的客户端的socket对象
和属于客户端的套接字,代码如图:
假设一共有3个客户端连接到服务器端,那么在服务器端就移动有4个套接字,第1个是socket()
返回的,用于监听的套接字;
其余3个是分别调用3次accept()
返回的不同的套接字。
如果已经有客户端连接到服务器端,不再需要监听和接受更多的客户端连接的时候,可以关闭由socket()
返回的套接字,而不会影响与客户端之间的通信。