1 importtkinter2 from tkinter importmessagebox3 importjson4 importtime5 importthreading6 importselect7 from socket import *
8 importtraceback9 from chat importclient_draw10
11
12 classClient:13
14 #配置连接
15 defconnect(self):16 #创建socket
17 self.s =socket(AF_INET, SOCK_STREAM)18 #服务器端和客户端均在同个机器上运行
19 remote_host =gethostname()20 #设置端口号
21 port = 1200
22 #发起连接
23 self.s.connect((remote_host, port))24 print("从%s成功连接到%s" %(self.s.getsockname(), self.s.getpeername()))25 returnself.s26
27 #监听(接收)消息
28 defreceive(self, s):29 #需要监控的对象列表
30 self.my =[s]31 while 1:32 print("监听中...")33
34 #实参:
35 #第1个实参 self.my:可读的对象,监听服务器端的响应消息
36 #第2个实参:可写的对象(本例不用)
37 #第3个实参:出现异常的对象(本例不用)
38 #这三个参数内容都是被操作系统监控的,即select.select()会执行系统内核代码
39 #1)当有事件发生时,立马往下执行代码;否则阻塞监控10秒
40 #2)若监控10秒了仍无事件发生,才往下执行
41 rl, wl, error = select.select(self.my, [], [], 10)42 #返回值:
43 #rl:监听某个文件描述符是否发生了读的事件(server给client发了数据)
44 #rl列表一开始为空,只有当s发生事件了(如客户端与服务器端建立了连接),才会将s加到rl中
45