私はLAN上でTCP pythonサーバを作成しようとしていましたが、私はこのプロジェクトで常に問題を抱えています。私の質問です:1つのサーバーから複数のクライアントに(TCP経由で)メッセージを送信することは可能ですか? (つまり、client-1は "Hello world"というメッセージを送信し、他のすべてのクライアント[clients-2、clients-3]にメッセージを表示します)。相続人は、これまでのサーバーのための私のコード:Python TCP Serverがすべてのクライアントにメッセージを送信しています
import socket, time, sys
import threading
TCP_IP = input("Host IP: ")
TCP_PORT = int(input("Host Port: "))
BUFFER_SIZE = 1024
def createNewThread(function):
threading.Thread(target=function).start()
def Listening():
try:
while True:
s.listen(1)
conn,addr = s.accept()
threading.Thread(target=Listening).start()
print("User joined with IP %s" % (addr[0]))
while 1:
data = conn.recv(BUFFER_SIZE)
if not data: break
conn.send(addr[0].encode("utf-8") + b': ' + data)
conn.close()
except ConnectionResetError as e:
print("Connection was closed: ", e)
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP,TCP_PORT))
print("-----Server started-----")
Listening()
except socket.error as e:
print("Socket error occured. More info: ", e)
そして相続人のクライアントのための私のコード:任意の答えを事前に
import socket, sys, time
TCP_IP = input("Connect to Local IP: ")
TCP_PORT = int(input("Connect to Local Port: "))
BUFFER_SIZE = 1024
running = True
while running == True:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Connecting...")
s.connect((TCP_IP,TCP_PORT))
print("Connected!")
while True:
MESSAGE = input("Message: ")
if MESSAGE == "exit":
s.close()
raise SystemExit
s.send(MESSAGE.encode('ascii'))
data = s.recv(BUFFER_SIZE)
print(data.decode("utf-8"))
running = False
time.sleep(20)
except:
print(sys.exc_info()[0])
time.sleep(1)
ありがとう!
編集: 私は出力に含まはこのような何かを見てみたい:
User3's IP: Message they sent
User1's IP: Message they sent
Message: What do you want to send?
"1台のサーバーから複数のクライアントに(TCP経由で)メッセージを送信することはできますか?" - はい。あなたが直面している問題は何ですか? – Prabhu
@Prabhu * sigh *どうやって? –