如果没有多播,tcp服务器如何工作?

时间:2012-09-26 01:30:40

标签: c# sockets networking tcp

我想知道tcp服务器是如何工作的,因为没有多播。我有兴趣在我的游戏中使用tcp,因为它不需要像其他游戏那样发送很多数据包。它仍然需要具有客户端/服务器架构。

由于没有多播,是否只有一个循环可以为每个客户端直接从服务器发送到客户端?这是我的世界所做的(因为我读它使用tcp)

我的理解是只有一个套接字可以绑定到一个端口。使用udp,服务器套接字可以接受来自IPAdress.Any的连接,因此它可以从所有客户端接收信息。由于TCP只是连接,这将如何工作?可以在同一个套接字上建立多个TCP连接吗?

1 个答案:

答案 0 :(得分:1)

服务器上的每个端口只能存在一个侦听连接。但是,许多客户端可以连接到那个侦听端口。引擎盖下的“连接”是ServerIP + ServerPort + ClientIP + ClientPort的组合,每次客户端端口不需要相同(只有服务器端端口需要保持静态),操作系统选择一个随机的高位端口并将其交给客户端进行连接。这就是为什么您可以在客户端上有许多传出连接但在服务器上只有一个侦听连接。

查看this page以获取有关如何设置与一个端口的多个连接的示例。