Python:简单的客户端服务器在第一次连接关闭后监听连接关闭

问题描述 投票:0回答:1

所以我想建立简单的Server-Client

这个serverclients(简单的string)获得连接,做我的东西,回复答案,关闭客户端连接并等待另一个连接。

客户

    import socket

    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    ip = '127.0.0.1'
    port = 4500
    address = (ip, port)
    message = 'mymessage'
    client = socket.socket()
    client.connect(address)
    client.sendall(message.encode('utf-8'))

服务器

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
name = socket.gethostname()
ip = '127.0.0.1'
port = 4500
address = (ip, port)
server.bind(address)
server.listen(1)
print('Start listening on', ip, ':', port)
client, addr = server.accept()
print('Received connection from', addr[0], ':', addr[1])

while True:
    data = client.recv(1024).decode('utf-8')
    print('Received', data, 'from the client')

    # DO something.....
    client.send('Goodbye'.encode('utf-8'))
    client.close()
    break

所以目前在client回到server的回应后,server很接近,我希望我的server继续听另一个连接。

python sockets server client client-server
1个回答
0
投票

很简单,你需要添加另一个循环,以便服务器可以始终监听:

服务器

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
name = socket.gethostname()
ip = '127.0.0.1'
port = 4500
address = (ip, port)
server.bind(address)
server.listen(1)

while True:
    client, addr = server.accept()
    print('Start listening on', ip, ':', port)
    print('Received connection from', addr[0], ':', addr[1])
    while True:
        data = client.recv(1024).decode('utf-8')
        print('Received', data, 'from the client')

        # DO something.....
        client.send('Goodbye'.encode('utf-8'))
        client.close()
        break
© www.soinside.com 2019 - 2024. All rights reserved.