小弟在学习python socket模块的过程中,写了一个接收信息的简易服务器,使用socke.recv(10)通过循环接收一个长字符串,并把所有数据拼接起来,但是无法退出while循环,请大神帮助一下。
import socket
class Server(object):
def __init__(self, ip, port):
self.ip = ip
self.port = port
# 初始化服务器
def config(self):
sever = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建socket
sever.bind((self.ip, self.port)) # 绑定port,ip,接收的是一个元组
sever.listen(1) # 开始监听
client, address = sever.accept() # 接收Tcp 链接,并返回建立的新的套接字与地址
temp=b''
info = client.recv(10)
while info:
temp+=info
print(temp)#验证temp
info=client.recv(10)
#此处循环无法退出
sever.close()
问题应该是
while info
的判断,可以把info打出来看下,为啥没法终止,是不是等于exit
另外建议优化如下:
服务器循环这块,修改下逻辑,建议使用多线程方式。否则,单线程在处理连接的过程中,无法接受其他客户端的连接。