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

我使用的代码只能在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)

如果name ==' main ':导入线程

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)

我对Python不熟悉,但我会给它一个镜头。

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

这里是我怀疑它应该看起来(不包括错误检查和不知道Python):

while  1: 
     clientsock, addr = serversock.accept()
     handler(clientsock,addr);
链接地址: http://www.djcxy.com/p/56437.html

上一篇: re connect client to server after closing

下一篇: Sockets with Tor and Python