我正在研究套接字编程,而服务器套接字accept()让我感到困惑.我为服务器套接字编写了两个方案accept(),请看一下:
accept(),它会创建一个新的(客户端)套接字,该套接字绑定到与端口服务器套接字绑定不同的端口.因此套接字通信是通过新绑定端口完成的,服务器套接字(accept()仅用于)正在等待最初绑定端口上的另一个客户端连接.我认为这不是很正确的答案,因为(1)端口匹配单个进程和(2)套接字接受是内部进程问题,单个进程可以有多个套接字.所以我根据一些stackoverflow答案做了第二个场景:
accept(),它创建了一个新的(客户端)套接字没有绑定到任何特定的端口,并在客户端与服务器进行通信,它使用的端口被绑定到服务器套接字(谁accept()小号连接)和其客户端套接字来实际的通信是由(sourceIP, sourcePort, destIP, destPort)传输级别的TCP头(?)中的元组解决的(这也是可疑的,因为我认为socket是某种应用程序级对象)这种情况也提出了一些问题.如果套接字通信仍然使用服务器套接字的端口,即客户端向服务器套接字端口发送一些消息,它是否使用服务器套接字的积压队列?我的意思是,客户端的消息如何区分connect()和read() or write()?如何解决服务器中的每个客户端套接字,没有任何端口绑定?
如果我的一个场景是正确的,会回答以下问题吗?或者我可能做了两个错误的场景,所以非常感谢你提供正确的答案,或至少一些相关的文本来研究.