立即学习:https://edu.csdn.net/course/play/24458/296236?utm_source=blogtoedu
1.修复端口被占用的bug
import socketphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#修复重复多次运行程序断就被占用的bug,在绑定端口前设置
phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)phone.bind(('127.0.0.1',8080))......
2.修复客户端发送空字符串,服务器一直处于等待状态的bug,判断是否为空,是则跳过本次循环进入下次循环,不为空则执行
......msg = input("请输入:")#修复客户端发送空字符串而服务器卡在接收信息处的bug,continue表示跳出本次循环,重新开始下一次的循环if not msg:continuephone.send(msg.encode('utf-8'))res = phone.recv(1024)......
3.修复客户端单方面关闭时,服务器会报错的bug,这里指的是windows会报错,Linux系统服务器会无限循环
......while True:#解决客户端单方面关闭而服务器还在等待时会报ConnectionResetError错误的bug
#利用try....except....try:data = conn.recv(1024)#1024表示接收的字节最大量是1024bytesprint('这是客户端的请求数据',data)#2)处理接收的请求后,发送数据send()#将客户端发送来的小写字母经过大写处理后发送返回给客户端conn.send(data.upper())except ConnectionResetError:break.......
Linux系统直接用if not data:break语句即可解决