多个客户端-服务器聊天应用程序,不允许在同一端口上使用多个侦听器

时间:2018-06-26 18:16:37

标签: sockets tcp client-server chat

比方说,我正在创建一个打算在我的本地网络中使用的聊天(客户端-服务器)应用程序。我正在考虑拥有一个与客户端进行通信的服务器,以及多个仅与该服务器进行通信的客户端。 我最初的想法是服务器将具有TCP套接字侦听器以及每个客户端。当我在同一台计算机上同时侦听同一端口的服务器端应用程序和客户端应用程序时,就会出现问题。这是不允许的。当我的计算机上运行的两个客户端应用程序都无法侦听同一TCP端口时,也会出现相同的问题。

如何解决此问题?常见的策略是什么?

1 个答案:

答案 0 :(得分:1)

仅当客户端应用程序绑定到服务器应用程序和/或其他客户端应用程序也绑定到的特定端口而不是绑定到临时应用程序时,该问题才会存在>端口(通常是客户端执行的操作。)

要绑定到临时端口,要么根本不绑定(connect()进行隐式绑定),要么绑定到端口0,然后让操作系统选择可用的端口。在大多数情况下,服务器应绑定到特定端口,而客户端应尽可能绑定到临时端口。

您的客户端应用程序不需要它们自己的侦听套接字即可与服务器通信。他们仅在执行对等数据传输等操作时才需要。即使在那时,他们也应该使用外围端口或预配置的端口(在防火墙,NAT等情况下),并且可以在协商传输时,使用基于服务器的通信来共享这些端口之间的状态。