Python TCP线程

2024-04-29 09:22:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序,它的结构如下

2 Threads
1 socket

Thread 1:
Sending data to different clients

Thread 2:
Receiving data from different clients

我可以在这个应用程序中使用相同的套接字吗? 或者我应该使用不同的端口号套接字来发送和接收数据?你知道吗


Tags: tofrom程序应用程序datasocket结构thread
2条回答

描述是相当不够的-如果有相同的客户端,你想发送数据和接收数据,一个标准的做法是一个套接字每连接(TCP)或如果你的应用程序是UDP,你确实可以只使用一个套接字-除此之外-你必须在应用程序中做大量的状态维护。(例如,在recvfrom中获取远程地址—将其存储在某个结构中以供以后使用,并使用它发送到另一端)。此外,当您有两个线程时,任何对“共享状态应同步”的访问都会增加额外的开销。所以,除非你能具体说出你想做什么,否则一个好的策略很难说。你知道吗

SocketServer.threadingtcserver服务器模块可用于处理多线程中的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()

相关问题 更多 >