代码之家  ›  专栏  ›  技术社区  ›  cost

一个端口上有多个TCP连接?

  •  7
  • cost  · 技术社区  · 15 年前

    我想知道的是,我可以这么做吗

    client_db.clients[numberOfClients].sock = listener.Accept();
    

    对于我的网络课程,我正在写一个聊天客户端和一个连接到它的服务器。我有一个客户机对象数组,其中包含有关连接到服务器的每个人的各种信息。在和一个客户打交道之前,我会有一个套接字等于listener。接受,然后我会用这个套接字做我所有的事情。我错误地认为我可以使用套接字数组与多个客户端建立多个TCP连接。

    有办法吗?我意识到可能有更有效的方法来实现这一点,但我仍在掌握网络编程的诀窍,更重要的是,我的服务器目前是基于我使用socket数组的想法。如果没有办法的话,我一定会记住这一课的。

    1 回复  |  直到 15 年前
        1
  •  33
  •   Community Mohan Dere    8 年前

    使用TCP,您只能让一个进程监听一个端口,但是,当它接受连接时(就像您的连接一样),您会得到一个完全不同的套接字描述符来执行会话,因此您可以返回并监听另一个连接的原始套接字描述符。

    您可以让数千个客户机与给定的dest ip/dest端口对进行通信(例如 stackoverflow.com:80

    所以是的,你 允许你做你正在做的事。

    你所做的 查找是,如果在仍有会话处于时间等待状态时尝试绑定到该端口,则不允许绑定。这是为了阻止来自网络上前一个会话的任何实时数据包进入并破坏您的会话。

    有关时间的更多信息,请参阅 this excellent answer :-)