上篇文章写了一个简单的单线程的一问一答的简单聊天室。这次我们使用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博客保留所有权利