Python TCP线程

时间:2015-05-01 02:26:54

标签: python networking tcp udp

我有一个具有以下结构的程序

2 Threads
1 socket

Thread 1:
Sending data to different clients

Thread 2:
Receiving data from different clients

我可以为此应用程序使用相同的套接字吗? 或者我应该使用不同的端口号套接字来发送和接收数据吗?

2 个答案:

答案 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中获取远程地址 - 将其存储在某个结构中供以后使用,并使用它发送到另一端)。此外 - 当您有两个主题时 - 任何对共享状态的访问都应该同步'增加额外的开销。因此,除非你能具体说明你想做什么 - 一个好的策略很难说清楚。