我有一个具有以下结构的程序
2 Threads
1 socket
Thread 1:
Sending data to different clients
Thread 2:
Receiving data from different clients
我可以为此应用程序使用相同的套接字吗? 或者我应该使用不同的端口号套接字来发送和接收数据吗?
答案 0 :(得分:0)
SocketServer.ThreadingTCPServer 模块可用于处理多线程中的tcp请求和响应。
import SocketServer
import sys
class MyTCPHandle(SocketServer.StreamRequestHandler):
def handle(self):
do_something()
if __name__ == "__main__":
mockserver = SocketServer.ThreadingTCPServer(('', int(sys.argv[1])), MyTCPHandle)
mockserver.serve_forever()
答案 1 :(得分:0)
描述非常不合适 - 如果有相同的客户端要向其发送数据和从中接收数据,标准做法是每个连接一个套接字(TCP),或者如果您的应用程序是UDP,您确实可以使用只有一个插槽 - 除此之外 - 你在应用程序中进行了大量的状态维护。 (例如,在recvfrom中获取远程地址 - 将其存储在某个结构中供以后使用,并使用它发送到另一端)。此外 - 当您有两个主题时 - 任何对共享状态的访问都应该同步'增加额外的开销。因此,除非你能具体说明你想做什么 - 一个好的策略很难说清楚。