【问题标题】:Multiple TCP connections in pythonpython中的多个TCP连接
【发布时间】:2014-08-07 06:17:51
【问题描述】:

我正在尝试为聊天程序编写服务器。我希望服务器与每个聊天用户都有一个 tcp 连接。服务器有没有办法同时拥有多个 tcp 连接而不为每个连接创建一个套接字?如果是,如何?

【问题讨论】:

    标签: python sockets python-3.x tcp


    【解决方案1】:

    没有。与 UDP 套接字不同,TCP 套接字的工作是面向连接的。无论数据写入到套接字中,“神奇地”似乎都作为数据流从另一端的套接字中出来。为此,两个套接字都维护一个虚拟连接,一个状态。除其他外,状态定义了连接的两个端点 - 两个套接字的 IP 和端口号。所以单个 TCP 套接字只能与另一端的单个 TCP 套接字通信。

    另一方面,UDP 套接字在每个数据包的基础上运行(无连接),允许您使用相同的套接字向/从任何目的地发送接收数据包。但是,UDP 不保证可靠性和按顺序交付。

    顺便说一句,你的问题与 python 无关。所有套接字(原始套接字除外)都是操作系统套接字,在所有语言中都以相同的方式工作。

    【讨论】:

    • 你最好也使用 TCP 来处理数据。在 UDP 中实现可靠性和顺序并不简单。如果没有这些功能,数据将丢失或乱序到达
    • 为什么不想打开多个套接字?所有语言都有处理多个套接字的方法。
    • 我不想要聊天室的用户限制。我已经尝试为每个用户生成一个套接字,但这以大混乱告终,所以我现在将使用 UDP。也许我稍后会回到 TCP。
    猜你喜欢
    • 2021-09-10
    • 2016-11-19
    • 1970-01-01
    • 2019-02-25
    • 2011-11-06
    • 2016-01-18
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    相关资源
    最近更新 更多