2016-11-19 9 views
1

これは、サーバーとクライアントを接続するコードの一部です。私はクライアントを倍増させたい。ヘルプを提出する。クライアントを乗算する方法

import socket, pickle import threading 

BUF_SIZE = 8192 

class Network(threading.Thread): 

    def __init__(self,frame): 
     threading.Thread.__init__(self) 
     self.frame = frame 
     self.server_sock= socket.socket() 

    def run(self): 
     self.server_sock.bind(('',1729)) 
     self.server_sock.listen(1) 
     client_sock, client_address = self.server_sock.accept() 
     data = client_sock.recv(BUF_SIZE) 
     processes_list = pickle.loads(data) 
     for process_details in processes_list: 
      self.frame.add_line(process_details) 

     client_sock.close() 
     self.server_sock.close() 
     self.server_sock.close() 

答えて

1

一般的な方法は、(私はいくつかの擬似コードでそれを説明しますので、私は、Pythonを知らない)などの各接続されたクライアントのために新しいスレッドやプロセスを開始することです:

create server socket; 
listen on specific address; 

while (true) 
{ 
    accept client; 
    start a new thread for client; 
} 

close server socket; 

新しいスレッドではあなたがすべての新しいクライアント接続を処理し、新しいtheadに渡すためにクライアントソケットだけを必要とします。

new thread function (client socket) 
{ 
    read (client socket); 
    write (client socket); 
    close (client socket); 
} 

また、バックログキューを2から5の接続に増やすことをお勧めします。

+0

ブログ投稿によると、バックログキューの数を増やすことはお勧めできません。http://blog.stephencleary.com/2009/05/using-socket-as-server-listening- socket.html – shakram02