Code review: Server with threads to handle multiple clients

2

The server with Threading:

import socket

from threading import Thread



def Servidor():

    servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    ip = "0.0.0.0"
    porta = 8884

    servidor.bind((ip, porta))

    servidor.listen(5)



    while True:
        socket_client, adddress = servidor.accept()

        dados = socket_client.recv(2048)

        print("Cliente: ", dados.decode("utf8"))
        msg = input("Servidor: ")
        enviados = socket_client.send(msg.encode("utf8"))

    servidor.close()



MeuServidor = Thread(target=Servidor,args=[])

MeuServidor.start()

the client:

import socket

ip ="localhost"
porta = 8884

cliente = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

cliente.connect((ip,porta))


while True:

    msg = input("Cliente: ")
    cliente.send(msg.encode("utf8"))
   # print("Cliente: ", msg)
    recebido = cliente.recv(1024)
    print("Servidor: ", recebido.decode("utf8"))

cliente.close()

What's happening: The server only accepts a single client!

    
asked by anonymous 09.04.2018 / 19:29

1 answer

4

The server logic should look like this:

Enquanto verdadeiro:
    Accept (operação bloqueante)
    Criar uma nova Thread e passar para ela o socket_client. Ela deverá ficar em loop tratando a chegada de mensagens até receber ordem de fechar
Fim enquanto
    
10.04.2018 / 00:36