基于socket简单套接字通信的 bug 修复
目前实现的添加了通信循环的套接字通信的一些问题
客户端向服务端发送消息时发现地址已被使用
在我们重启服务端时,可能会遇到这样的问题
当我们遇到这个问题时,可以在编写服务端代码时加入 一条 socket 配置,重新使用 IP 和 端口。
phone=socket(AF_INET,SOCK_STREAM)
phone.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #在bind前加
phone.bind(('127.0.0.1',8080))
发空消息时程序进入死循环
除了地址已被使用的错误,我们发现当客户端发送消息时直接发送,即什么都不输入就敲回车,会导致服务端和客户端直接卡在循环中,即只能看到光标在闪动。如下图:
考虑到是发送了空信息,即" "
的消息,所以我们想到的第一个解决方案是在客户端输入要发送的消息时判断发送的消息是否为空。即:
if not data:
continue
这里要注意的,除了客户端需要判断消息是否为空,服务端也是要判断消息是否为空,否则在运行时我们就会看到这样的运行结果:
所以我们对于服务端的优化代码如下:
while True: # 通信循环
try