【发布时间】:2014-08-07 06:17:51
【问题描述】:
我正在尝试为聊天程序编写服务器。我希望服务器与每个聊天用户都有一个 tcp 连接。服务器有没有办法同时拥有多个 tcp 连接而不为每个连接创建一个套接字?如果是,如何?
【问题讨论】:
标签: python sockets python-3.x tcp
我正在尝试为聊天程序编写服务器。我希望服务器与每个聊天用户都有一个 tcp 连接。服务器有没有办法同时拥有多个 tcp 连接而不为每个连接创建一个套接字?如果是,如何?
【问题讨论】:
标签: python sockets python-3.x tcp
没有。与 UDP 套接字不同,TCP 套接字的工作是面向连接的。无论数据写入到套接字中,“神奇地”似乎都作为数据流从另一端的套接字中出来。为此,两个套接字都维护一个虚拟连接,一个状态。除其他外,状态定义了连接的两个端点 - 两个套接字的 IP 和端口号。所以单个 TCP 套接字只能与另一端的单个 TCP 套接字通信。
另一方面,UDP 套接字在每个数据包的基础上运行(无连接),允许您使用相同的套接字向/从任何目的地发送接收数据包。但是,UDP 不保证可靠性和按顺序交付。
顺便说一句,你的问题与 python 无关。所有套接字(原始套接字除外)都是操作系统套接字,在所有语言中都以相同的方式工作。
【讨论】: