关闭后重新连接客户端到服务器

时间:2014-05-03 16:30:44

标签: multithreading sockets python-2.7

我使用的代码只允许在4个不同的端口上进行4连接。 此代码正常工作,但当客户端关闭连接时,它无法重新建立连接。连接被拒绝。认为这是因为线程已关闭。怎么解决这个? 我无法更改端口号...

enter code here

- - 编码:cp1252 - -

来自套接字导入*

BUFF = 25

def服务器(主机,端口):

def response(key):
    return 'Server response: ' + key

def handler(clientsock,addr):
    while 1:
        data = clientsock.recv(BUFF)
        if not data: break
        print repr(addr) + ' recv:' + repr(data)
        clientsock.send(response(data))
        print repr(addr) + ' sent:' + repr(response(data))
        if "close" == data.rstrip(): break # type 'close' on client console to close connection from the server side

    clientsock.close()
    print addr, "- closed connection" #log on console


addr = (host, port)
serversock = socket(AF_INET, SOCK_STREAM)
serversock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
serversock.bind(addr)
serversock.listen(1)
clientsock, addr = serversock.accept()
handler(clientsock, addr)

如果名称 ==' 主要':     导入线程

HOST = '192.168.0.12'
PORTS = [10001,10002,10003,10004]
threads = []
for port in PORTS:
    th = threading.Thread(target=server, args=(HOST, port))
    th.start()
    threads.append(th)

1 个答案:

答案 0 :(得分:0)

我不熟悉Python,但我会试一试。

在您的线程中,您可能需要添加一个循环来接受新连接。 serversock.accept()和调用“handler”将在该循环中。这应该允许客户端在客户端关闭连接时再次连接到服务器。

以下是我怀疑它应该看起来的样子(不包括错误检查,不知道Python):

while  1: 
     clientsock, addr = serversock.accept()
     handler(clientsock,addr);