2017-02-13 189 views
0

我想線程服務器插座蟒。我從互聯網上找到了這個代碼。我工作很好,但我不知道發生了什麼。 任何人都可以簡單介紹一下它,我想從主數據發送到MiTcpHandler類。我怎樣才能做到這一點?線程服務器套接字在python

import SocketServer 
import threading 
import time 

class MiTcpHandler(SocketServer.BaseRequestHandler): 
    def handle(self): 
     data = "" 
     while data != 'End': 
      data = self.request.recv(1024) 
      print data 
      time.sleep(0.1) 


class ThreadServer(SocketServer.ThreadingMixIn,SocketServer.ForkingTCPServer): 
    pass 

def Main(): 
    host='' 
    port = 9998 
    server = ThreadServer((host,port),MiTcpHandler) 
    server_thread = threading.Thread(target=server.serve_forever) 
    server_thread.start() 


Main() 
+0

我建議你閱讀'SocketServer'模塊的文檔:https://docs.python.org/2/library/socketserver.html – mhawke

回答

0

正如在評論中提到的,您應該閱讀SocketServer模塊文檔。它包括如何使用它的例子。從這個你可以得到的代碼是如何工作的理解。

對於你的問題,如何從「主」將數據發送到線的第二部分,你需要建立一個TCP連接到服務器(在同一主機上的端口9998)。您可以使用socket.create_connection()爲:

def Main(): 
    host='' 
    port = 9998 
    server = ThreadServer((host,port),MiTcpHandler) 
    server_thread = threading.Thread(target=server.serve_forever) 
    server_thread.start() 

    # connect to the server and send some data 
    import socket 
    s = socket.create_connection(('localhost', 9998)) 
    s.send('hi there\n') 
    s.send('End\n') 

這會從充當客戶端的主要功能將數據發送到服務器。請注意,您需要做的處理更多的工作,妥善處理終止"End"串的連接和檢測的終止。

+0

我不想從套接字發送數據。我想從ARGS或類似的東西從__init__或等送... – user3575812