如果计算机正在运行侦听某个端口(例如9999)的服务器应用程序,并且在同一台计算机上,多个客户端应用程序打开到同一服务器应用程序的TcpClient(localhost,9999)连接,会发生什么? 这会引起某种碰撞吗?
答案 0 :(得分:0)
在C#中,TcpListener
正在等待来自AcceptSocket
或AcceptTcpClient
的客户端的传入连接。在成功连接上,您将获得一个Socket
对象,该对象可用于与客户端IP标识的特定客户端进行通信。如果与AcceptSocket
之外的另一个线程处理与客户端的连接,则您的服务器应用程序可以同时与多个客户端通信。例如服务器循环只调用Accept
并直接将Socket
移交给某个处理程序线程/任务。通常,对于传入连接,您知道客户端IP地址(和端口),并且基于此可以将连接/数据多路复用到相应的套接字。
一个好的和完整的答案,但非C#具体在这里
TCP : two different sockets sharing a port?
在客户端,为传出连接选择随机端口。这是由套接字/网络系统
完成的在互联网范例中,端口号介于0到65535之间,由客户端主机上运行的传输层软件随机选择。这些被称为临时端口(范围从1024到49151)。