2024-04-29 09:22:57 发布
网友
我有一个程序,它的结构如下
2 Threads 1 socket Thread 1: Sending data to different clients Thread 2: Receiving data from different clients
我可以在这个应用程序中使用相同的套接字吗? 或者我应该使用不同的端口号套接字来发送和接收数据?你知道吗
描述是相当不够的-如果有相同的客户端,你想发送数据和接收数据,一个标准的做法是一个套接字每连接(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()
描述是相当不够的-如果有相同的客户端,你想发送数据和接收数据,一个标准的做法是一个套接字每连接(TCP)或如果你的应用程序是UDP,你确实可以只使用一个套接字-除此之外-你必须在应用程序中做大量的状态维护。(例如,在recvfrom中获取远程地址—将其存储在某个结构中以供以后使用,并使用它发送到另一端)。此外,当您有两个线程时,任何对“共享状态应同步”的访问都会增加额外的开销。所以,除非你能具体说出你想做什么,否则一个好的策略很难说。你知道吗
SocketServer.threadingtcserver服务器模块可用于处理多线程中的tcp请求和响应。你知道吗
相关问题 更多 >
编程相关推荐