立即学习:https://edu.csdn.net/course/play/24458/296236?utm_source=blogtoedu
1.修复端口被占用的bug
import socket
phone = 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:continue
phone.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表示接收的字节最大量是1024bytes
print('这是客户端的请求数据',data)
#2)处理接收的请求后,发送数据send()
#将客户端发送来的小写字母经过大写处理后发送返回给客户端
conn.send(data.upper())
except ConnectionResetError:
break
.......
Linux系统直接用if not data:break语句即可解决