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