Olá, como posso fazer clientes receber msgs de outros clientes em broadcast utilizando python socket?
Fiz um pequena aplicação em python utilizando socket, nela consigo enviar msgs dos clientes para o servidor. Até o momento eu não consegui fazer com que as mensagens de um cliente apareçam no console de outro cliente. Se eu estou utilizando broadcast todos os clientes deveriam receber a mensagem, mas não é o que esta acontecendo e eu não consegui identificar qual problema. Testei também os clientes colocando todos os para ouvirem na mesma porta alterando no código do cliente IP_BROADCAST = “255.255.255.255” PORT = 5000, isso funcionou, o que o cliente digita aparece no outro cliente e no servidor, só que nesse caso eu perco a informação de qual cliente que enviou a mensagem.
Em resumo o que quero é que o que eu digito em console de um cliente apareça no console de outro cliente mas que eu também possa saber qual cliente que enviou.
Obs: meu firewall já está desativado.
Servidor
import socket,threading
IP_BROADCAST = “255.255.255.255”
HOST = ‘’ # Endereco IP do Servidor
PORT = 5000 # Porta que o Servidor esta
my_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)
my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
my_socket.bind((HOST,PORT))
def receber():
while True:
msg, cliente = my_socket.recvfrom(1024)
print(cliente, msg)
def main():
threadReceber = threading.Thread(target=receber)
threadReceber.start()
if name == ‘main’:
main()
Cliente
import socket,threading
IP_BROADCAST = "255.255.255.255"
PORT = 5000
my_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)
my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
my_socket.bind((’’,my_socket.getsockname()[1]))
def receber():
while True:
msg, cliente = my_socket.recvfrom(1024)
print(cliente, msg)
def enviar():
while True:
message = input()
my_socket.sendto(message.encode(),(IP_BROADCAST,PORT))
def main():
threadReceber = threading.Thread(target=receber)
threadReceber.start()
threadEnviar = threading.Thread(target=enviar)
threadEnviar.start()
if name == ‘main’:
main()