我正在创建一个服务器,但是我遇到了墙,似乎无法爬过它......
在用户与服务器断开连接之前,我的当前代码运行良好。印刷了无数的\ n,我似乎无法弄明白为什么。
我知道问题在于recv功能。我相信它与我的线程有关,但我似乎无法弄清楚它是什么。
以下是代码,如果有人能帮助我,我将非常感激。
def recv(self, obj, addr, s):
while True:
try:print obj.recv(1024)
except:pass
def connect(self, port):
s = socket.socket()
s.bind(('', port))
s.listen(1)
self.clearscreen()
print "Waiting for connections..."
while True:
obj, addr = s.accept()
verify = obj.recv(1024)
if verify == "ea25364e2dab91b40ae4f73163854b5d":
print "\n"+str(addr) + " has connected.\n "
self.conns[addr] = obj
try:
Thread(target=self.handle, args=(obj, addr, s)).start()
Thread(target=self.recv, args=(obj, addr, s)).start()
except:pass
else:pass
答案 0 :(得分:2)
因为你在调用recv()时从不检查EOS,所以你永远不会检测到断开连接。
答案 1 :(得分:0)
好吧,看起来我已经弄明白了。
def recv(self, obj, addr, s):
while True:
try:a = obj.recv(1024)
except:pass
if not p: return 1
else: print a