O cliente:
from socket import *
serverHost = 'localhost'
serverPort = 8884
# Menssagem a ser mandada codificada em bytes
menssagem = [b'Ola mundo da internet!']
# Criamos o socket e o conectamos ao servidor
sockobj = socket(AF_INET, SOCK_STREAM)
sockobj.connect((serverHost, serverPort))
# Mandamos a menssagem linha por linha
for linha in menssagem:
sockobj.send(linha)
# Depois de mandar uma linha esperamos uma resposta
# do servidor
data = sockobj.recv(1024)
print('Cliente recebeu:', data)
# Fechamos a conexão
sockobj.close()
O servidor:
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)
socket_client, adddress = servidor.accept()
while True:
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()
Problema: Só existe 1 troca de dados por cliente conectado! Após a primeira troca de dados, a conexão é encerrada!
Como modificar o servidor de forma a possibilitar inúmeras trocas de dados, até o cliente resolver encerrar a conexão?
Problema2: O servidor só lida com 1 cliente por vez: Como torná-lo capaz de lidar com vários clientes simultaneamente?