0
나는 새로운 클라이언트로 들어오는 클라이언트 메시지를 전달하는 TCP 서버의 파이썬에서 간단한 예를 찾고있다. 내가 찾을 수있는 것은 에코 서버/클라이언트의 예입니다.파이썬 TCP 클라이언트에서 클라이언트로 메시지 전달
건배,
dhpizza
나는 새로운 클라이언트로 들어오는 클라이언트 메시지를 전달하는 TCP 서버의 파이썬에서 간단한 예를 찾고있다. 내가 찾을 수있는 것은 에코 서버/클라이언트의 예입니다.파이썬 TCP 클라이언트에서 클라이언트로 메시지 전달
건배,
dhpizza
여기에만 표준 라이브러리를 사용하여 기본 예제 :
import SocketServer
import threading
class Handler(SocketServer.StreamRequestHandler):
def handle(self):
print self.client_address,'connected'
self.server.add_client(self.request)
while 1:
data = self.request.recv(1024)
if not data: break
self.server.send(self.request,data)
self.server.remove_client(self.request)
class Server(SocketServer.ThreadingTCPServer):
def __init__(self,*args,**kwargs):
SocketServer.ThreadingTCPServer.__init__(self,*args,**kwargs)
self.clients = []
self.lock = threading.Lock()
def add_client(self,c):
with self.lock:
self.clients.append(c)
def remove_client(self,c):
with self.lock:
self.clients.remove(c)
def send(self,sender,data):
with self.lock:
for c in self.clients:
if c is not sender:
c.sendall(data)
s = Server(('',8000),Handler)
s.serve_forever()
당신은 정말 self.lock와'사용해야합니다'대신 획득하고 자신을 해제 호출하는이 - 짧은 분명한 함정을 피할 수 있습니다. – Voo
@Voo 어쩌면 저는 파이썬 2.4를 사용하고 있습니다 : ^). 고마워, 바뀌 었어. –
조난, 소프트웨어 종속성의 또 다른 희생양 : ( – Voo