1.代码添加中文注释后,在Eric软件下直接运行没有问题,但是在命令行窗口运行不了,错误提示见下图。

 2.使用python实现socket通信,server在IDE中运行,client在命令行窗口运行,结果cmd中中文显示乱码。网上搜索了一下,发现原因是cmd中默认GBK编码,而IDE中指定utf-8编码。尝试在cmd中输入chcp 65001,将命令行转换为utf-8代码页,结果还是乱码,于是只能手动修改client代码,转换编码格式,下面是server和client的代码。

 1 #!/usr/bin/python
 2 # -*- coding: utf-8 -*-
 3 # 文件名:server.py
 4 
 5 import socket                # 导入 socket 模块
 6 
 7 s = socket.socket()          # 创建 socket 对象
 8 host = socket.gethostname()  # 获取本地主机名
 9 port = 12345                 # 设置端口
10 s.bind((host, port))         # 绑定端口
11 
12 s.listen(5)                  # 等待客户端连接
13 
14 #服务端只进行一次连接
15 while True:
16     c, addr = s.accept()     # 建立客户端连接。
17     print '连接地址:', addr
18     c.send('欢迎访问服务端!')
19     c.close()                # 关闭连接
20     break
21 print 'exit..'
 1 #!/usr/bin/python
 2 # -*- coding: utf-8 -*-
 3 # 文件名:client.py  在命令行窗口运行,因为命令行默认GBK编码,所以Python2.X环境需要进行编码转换
 4 
 5 import socket               # 导入 socket 模块
 6 
 7 s = socket.socket()         # 创建 socket 对象
 8 host = socket.gethostname() # 获取本地主机名
 9 port = 12345                # 设置端口好
10 
11 s.connect((host, port))
12 
13 #开始编码转换
14 content = s.recv(1024)
15 content_unicode = content.decode("utf-8")
16 content_gbk = content_unicode.encode("gbk")
17 #转换结束
18 
19 print content_gbk
20 #print s.recv(1024)
21 s.close()  

3.接上篇博客中提到的函数中添加延时,但界面无法实现先后显示的问题,之前的代码见下图:

后来尝试将类似代码放到线程函数中,运行正常,新代码见下图:

需要注意的是,使用thread模块创建线程时,向线程函数传递的第二个参数得是一个元组,并且元素后接“,”。

thread.start_new_thread( self.slot_B, (0.5, ) )