Python: простой клиентский сервер, прослушивающий соединения, закрывающиеся после закрытия первого соединения - PullRequest
0 голосов
/ 09 апреля 2019

Итак, я хочу построить простое Server-Client.

Это server получает соединения от clients (просто 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 продолжал прослушивать другие соединения.

1 Ответ

0 голосов
/ 09 апреля 2019

Просто, вам нужно добавить еще один цикл, чтобы сервер всегда мог слушать:

Сервер

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
...