Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与服务器位于同一台计算机上的多个TCP客户端_C#_.net_Client Server - Fatal编程技术网

C# 与服务器位于同一台计算机上的多个TCP客户端

C# 与服务器位于同一台计算机上的多个TCP客户端,c#,.net,client-server,C#,.net,Client Server,如果一台机器运行的服务器应用程序在某个端口(比如9999)上侦听,并且在同一台机器上,多个客户端应用程序打开了到同一服务器应用程序的TcpClient(localhost,9999)连接,会发生什么情况? 这会引起某种碰撞吗 在C#aTcpListener正在等待来自具有AcceptSocket或AcceptTcpClient的客户端的传入连接。成功连接后,您将返回一个套接字对象,该对象可用于与客户端IP标识的特定客户端进行通信。如果与客户机的连接是在AcceptSocket之外的另一个线程中处

如果一台机器运行的服务器应用程序在某个端口(比如9999)上侦听,并且在同一台机器上,多个客户端应用程序打开了到同一服务器应用程序的TcpClient(localhost,9999)连接,会发生什么情况? 这会引起某种碰撞吗

在C#a
TcpListener
正在等待来自具有
AcceptSocket
AcceptTcpClient
的客户端的传入连接。成功连接后,您将返回一个
套接字
对象,该对象可用于与客户端IP标识的特定客户端进行通信。如果与客户机的连接是在
AcceptSocket
之外的另一个线程中处理的,则服务器应用程序可以同时与多个客户机通信。e、 g.服务器循环只调用
Accept
,并直接将
套接字
移交给某个处理程序线程/任务。一般来说,对于传入连接,您知道客户端IP地址(和端口),并基于此地址可以将连接/数据多路传输到相应的套接字。 这里有一个很好的完整答案,但不是C#specific

在客户端,为传出连接选择一个随机端口。这是由套接字/网络系统完成的

在internet范例中,端口号介于0和65535之间,由客户端主机上运行的传输层软件随机选择。这些称为临时端口(范围从1024到49151)


可能是@Micky的复制品,我只是不明白它是如何工作的,数据包是如何不混合的?我的问题是,当所有东西都在同一台机器上运行时会发生什么。我的问题是,当所有东西都在同一台机器、服务器和客户端上时会发生什么。所有服务器都具有相同的IP。服务器侦听指定的端口,至于客户端端口,我不确定是否隐式选择随机输出端口。如果不是的话,我不明白他们怎么会有不同的套接字。是的,你是对的,我认为底层操作系统套接字系统正在为客户端选择随机输出