我在Python2.7中有一个小型的服务器-客户机应用程序 客户机应该从服务器获取数据。 这是诊所的密码
def main(ThreadNmber):
queue = Queue.Queue(maxsize=25000)
try:
for i in range(ThreadNmber):
t = Downloader(queue)
t.daemon = True
t.start()
except Exception, e:
return 1
while 1:
s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Connecting'
s2.connect((HOST, PORT))
print 'Receiving data...'
data = s2.recv(99950)
s2.close()
if 'empty' in data:
time.sleep(300)
else:
for line in data.split('*'):
try:
a = line.split(' ')[0]
b = line.split(' ')[1]
c = line.split(' ')[2]
queue.put((a.rstrip(),b.rstrip(),c.rstrip()))
except:
pass
这是服务器:
^{pr2}$我的问题是,客户机在While循环中工作时,第一次成功连接后,第二次成功连接时,它只是“连接”,无法再次连接到服务器。在
有趣的是,当我在不涉及任何工作的情况下使用客户机进行测试时,只需获取数据并关闭,它就可以正常工作。在
在客户端,我还在线程中执行套接字工作。在做了一些测试之后,我发现,当我把这个部分去掉,比如没有其他的套接字工作时,客户机工作得很好,没有任何问题。在
有什么想法吗? 我使用sendall是因为数据很大(大约400-500kb),如果有人想知道原因的话。在
目前没有回答
相关问题 更多 >
编程相关推荐