【问题标题】:Multiple clients - server chat application, multiple listeners on the same port are not allowed多个客户端 - 服务器聊天应用程序,不允许同一端口上的多个侦听器
【发布时间】:2018-12-05 13:08:38
【问题描述】:

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

我该如何解决这个问题?常见的策略是什么?

【问题讨论】:

  • 客户不听。服务器听。客户端连接。您描述的问题不存在。

标签: sockets tcp client-server chat


【解决方案1】:

仅当客户端应用程序绑定到服务器应用程序和/或其他客户端应用程序也绑定到的特定端口而不是绑定到临时 端口(这是客户通常会做的事情)。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    相关资源
    最近更新 更多