【问题标题】:Multiple TcpClients on the same machine as the server与服务器在同一台机器上的多个 TcpClients
【发布时间】:2015-11-01 10:32:08
【问题描述】:

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

【问题讨论】:

标签: c# .net client-server


【解决方案1】:

在 C# 中,TcpListener 正在等待来自带有 AcceptSocketAcceptTcpClient 的客户端的传入连接。成功连接后,您将返回一个 Socket 对象,该对象可用于与客户端 IP 标识的特定客户端通信。如果与客户端的连接是在AcceptSocket 之外的另一个线程中处理的,则您的服务器应用程序可以同时与多个客户端通信。例如服务器循环只调用Accept 并直接将Socket 移交给某个处理程序线程/任务。通常,对于传入连接,您知道客户端 IP 地址(和端口),并且基于此可以将连接/数据多路复用到相应的套接字。 一个好的和完整的答案,但非 C# 特定在这里 TCP : two different sockets sharing a port?

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

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

Applied C#.NET Socket Programming

【讨论】:

  • 我的问题是,当一切都在同一台机器上运行时会发生什么。
  • 我的问题是,当一切都在同一台机器、服务器和客户端上时会发生什么。所有这些都具有相同的IP。服务器侦听指定端口,至于客户端端口,我不确定是否隐式选择随机输出端口。如果不是,那么我不明白他们怎么会有不同的套接字。
  • 是的,你是对的,我认为底层操作系统套接字系统正在为客户端选择随机输出端口
猜你喜欢
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
相关资源
最近更新 更多