2015-05-01 45 views
1

我有一個具有以下結構Python的TCP線程

2 Threads 
1 socket 

Thread 1: 
Sending data to different clients 

Thread 2: 
Receiving data from different clients 

我可以使用相同的插槽爲這個應用程序? 或者我應該使用不同的端口號插座來發送和接收數據?

回答

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() 
0

的描述是相當不夠的 - 如果有你想要的數據發送和接收來自一個標準的做法是每個連接一個插座(TCP),或者如果你的應用是UDP,你數據,同客戶確實只需要使用一個套接字 - 除此之外 - 您必須在應用程序中進行很多狀態維護。 (例如,在recvfrom中獲取遠程地址 - 將其存儲在某個結構中供以後使用,並使用該地址發送到另一端)。另外 - 當你有兩個線程時 - 對'共享狀態應該進行同步'的訪問會增加額外的開銷。所以除非你能具體說出你想要做什麼 - 一個好的策略很難說清楚。