machen Ich mache eine kleine Chat-Anwendung in Python mit UDP-Sockets. Ich habe es eingerichtet, wo der Benutzer seinen Benutzernamen wählen und dann Nachrichten an den Server senden würde. Der Server würde dann die Nachricht an jeden verbundenen Client senden. Ich habe es geschafft, dass der Server funktioniert und der Client kann Nachrichten an den Server senden. Das Problem besteht darin, dass der Server die Nachrichten nicht an die anderen verbundenen Clients sendet. HierUDP Python: Wie man den Server Broadcast Nachrichten die Clients senden in der UDP Chatroom
ist der Server-Code:
from socket import *
import socket
port = 1234
localhost='127.0.0.1'
#Create a socket
try :
s = socket.socket(AF_INET, SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
print ('Socket created')
except socket.error:
print ('Error creating socket.')
sys.exit()
#Bind the socket to port and localhost.
try:
s.bind((localhost, port))
except socket.error:
print ('Error while binding.')
sys.exit()
print ('Bind complete.')
while 1:
# receive data from client (data, addr)
d = s.recvfrom(2048)
data = d[0]
addr = d[1]
if not data:
break
print('Client connected at ' + addr[0] + ':' + str(addr[1]))
print('Message[' + addr[0] + ':' + str(addr[1]) + '] - ' +
data.strip().decode("utf-8"))
s.close()
Client-Code:
from socket import *
import socket
import sys
port=1234
localhost='127.0.0.1'
try:
s = socket.socket(AF_INET, SOCK_DGRAM)
except socket.error:
print ('Error creating socket.')
sys.exit()
print ("Connected to chat")
Username= input('Please choose a username: ')
while(1) :
msg = input ('Enter message to send : ')
try :
#Set the whole string
s.sendto('{}: {}'.format(Username,msg).encode('utf-8'), (localhost,port))
# receive data from server (data, addr)
data = s.recvfrom(2048)
reply = data[0]
addr = data[1]
print (+ reply.decode())
except socket.error:
print ('Error sending message ')
sys.exit()
Irgendwelche Vorschläge?