파이썬 서버에 연결되어있는 여러 사람이 메시지를 입력하고 다른 사람이 Enter 키를 눌러야 볼 필요없이 즉시 볼 수 있도록 연결하는 방법을 모릅니다. 여기서 스레딩을 어떻게 사용합니까?스레딩 및 네트워킹
서버 :
import socket, thread
def reactor(sock,client,data):
try:
sock.sendto(data.encode('utf-8'),client)
sock.close()
except Exception,e :
print(e)
sock.close()
def Main():
host = '25.4.221.63'
port = 5000
clients = []
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind((host,port))
print("Server Started")
while True:
data,addr=s.recvfrom(1024)
if addr not in clients:
clients.append(addr)
data = data.decode('utf-8')
print("Message From: " + str(addr))
print("From connected user: " + data)
print("Sending: " + data)
for client in clients:
try:
thread.start_new_thread(reactor,(s,client,data))
except Exception,e :
print(e)
s.close()
if __name__ == '__main__':
Main()
클라이언트 :
import socket
def Main():
alias = input("ScreenName:")
inp = input("IP:")
host =inp
port = 5001
server = ('25.4.221.63',5000)
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind((host,port))
message = input("-> ")
while message != 'q':
s.sendto(message.encode('utf-8'), server)
data,addr = s.recvfrom(1024)
data = data.decode('utf-8')
print(data)
message = input(alias + ' -> ')
s.close()
if __name__ == '__main__':
Main()
실제 IP 주소를 게시하는 것은 좋지 않을 것입니다. –