LAN을 통해 TCP 파이썬 서버를 만들려고했지만이 프로젝트에서 계속 문제가 발생했습니다. 내 질문은 : 하나의 서버에서 여러 클라이언트에 (TCP를 통해) 메시지를 보낼 수 있습니까? (즉, client-1은 "Hello world"라는 메시지를 보내고 다른 모든 클라이언트 [clients-2, clients-3]에 메시지를 표시합니다. Heres는 지금까지 서버에 대한 내 코드 : 클라이언트에 대한파이썬 TCP 서버가 모든 클라이언트에게 메시지를 보내고 있습니다
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)
그리고 heres는 내 코드 : 모든 답변에 미리
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)
감사합니다!
편집 : 내가 OUPUT이 같은 것을보고 싶지 :
User3's IP: Message they sent
User1's IP: Message they sent
Message: What do you want to send?
"1 대의 서버에서 여러 클라이언트로 (TCP를 통해) 메시지를 보낼 수 있습니까?" - 예. 당신이 겪고있는 문제점은 무엇입니까? – Prabhu
@Prabhu * 한숨 * 어떻게? –