私はUDPソケットを使ってPythonで小さなチャットルームアプリケーションを作っています。ユーザーがユーザー名を選択してサーバーにメッセージを送信する場所に設定しました。サーバーは、接続されているすべてのクライアントにメッセージをブロードキャストします。私はサーバを稼動させることができ、クライアントはサーバにメッセージを送ることができます。問題は、サーバーが接続されている他のクライアントにメッセージをブロードキャストしていないことです。UDP Python:UDPチャットルームでクライアントが送信するメッセージブロードキャストメッセージを作成する方法
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()
クライアントコード:
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()
任意の提案ここで
は、サーバーのコードですか?