客户端在循环中第二次未连接到服务器

2024-06-30 11:44:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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),如果有人想知道原因的话。在


Tags: in服务器fordata客户机queuelinesocket