python网络编程:在套接字服务器程序中使用ThreadingMixIn


root@iZ94nil6ddfZ:~# cat ThreadingMixIn.py #!/usr/lib/python import os import socket import threading import SocketServer SERVER_HOST = 'localhost' SERVER_PORT = 0 #tells the kernel to pickup a port dynamically BUF_SIZE = 1024 def client(ip, port, message): """A client to test threading mixin server """ #Connect to the server sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((ip, port)) try: sock.sendall(message) response = sock.recv(BUF_SIZE) print "Client received: %s" %response finally: sock.close() class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler): '''An example of threaded TCP Request handler ''' def handle(self): data = self.request.recv(1024) current_thread = threading.current_thread() response = "%s:%s " %(current_thread.name, data) self.request.sendall(response) class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): '''Nothing to add here, inherited everything necessary from parents ''' pass if __name__ == "__main__": server = ThreadedTCPServer((SERVER_HOST, SERVER_PORT), ThreadedTCPRequestHandler) ip, port = server.server_address server_thread = threading.Thread(target=server.serve_forever) server_thread.daemon = True server_thread.start() print "Server loop running on thread: %s" %server_thread.name client(ip, port, "Hello from clietn 1") client(ip, port, "Hello from clietn 2") client(ip, port, "Hello from clietn 3") server.shutdown()

执行结果:

 



root@iZ94nil6ddfZ:~# Python ThreadingMixIn.py 
Server loop running on thread: Thread-1
Client received: Thread-2:Hello from clietn 1 
Client received: Thread-3:Hello from clietn 2 
Client received: Thread-4:Hello from clietn 3 

posted @ 2016-06-01 10:58  天涯逐梦  阅读(151)  评论(0编辑  收藏  举报