上篇文章写了一个简单的单线程的一问一答的简单聊天室。这次我们使用SocketServer模块搭建一个多线程异步的聊天室。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# -*- coding:utf-8 -*- import SocketServer class mysocketclass(SocketServer.BaseRequestHandler): def handle( self ): client_information = self .request; #获取客户端的信息,相当于accept client_information.send( 'Welcome!' ); while True : data = client_information.recv( 1024 ) if data = = 'exit' : client_information.close(); else : print '**Client**:' ,(data); client_information.send( "ok" ); if __name__ = = '__main__' : ip_add = ( '127.0.0.1' , 9998 ); server = SocketServer.ThreadingTCPServer(ip_add,mysocketclass); server.serve_forever(); |
客户端
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#-*-coding:utf-8-*- import socket socket_object = socket.socket(); ip_add = ( '127.0.0.1' , 9998 ); socket_object.connect(ip_add); while True : print '**Server**:' ,(socket_object.recv( 1024 )) seend_content = raw_input ( 'Client:' ); socket_object.send(seend_content) if seend_content = = 'exit' : socket_object.connect.close(); |
从代码可以看出,客户端的内容是没变的。变动的是服务端采用了模块SocketServer
运行截图:
下一次我们加上数据库,实现登录,注册的聊天室
原文地址:http://rexyan.cn/article/25
Rex博客保留所有权利