여러 클라이언트로 간단한 서버를 구현하려고합니다. 그것은 필요한 소켓에서 데이터를 수신하고 처리 한 다음 다른 클라이언트로 데이터를 보내야합니다. Python 표준 라이브러리에서 select 모듈을 사용합니다.여러 클라이언트가있는 간단한 서버
class ProcessingServer:
def __init__(self, bindaddress="localhost", portname=50001, maxqueue=5):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.bind((bindaddress, portname))
self.socket.listen(maxqueue)
self.inputsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.data = ""
def connect_to_output(self, address, port):
self.inputsocket.connect((address, port))
def start(self):
rsocks = []
wsocks = []
rsocks.append(self.socket)
wsocks.append(self.inputsocket)
self.socket.accept()
while True:
try:
reads, writes, errs = select.select(rsocks, wsocks, [])
except:
return
for sock in reads:
if sock == self.socket:
client, address = sock.accept()
rsocks.append(client)
else:
self.socket.send(self.data)
rsocks.remove(sock)
for sock in writes:
if sock == self.inputsocket:
self.data = sock.recv(512)
wsocks.remove(sock)
print repr(self.data)
여기 간단한 클라이언트 : 서버의 일부를 받기
import socket
mysocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysocket.connect(("localhost", 50001))
while True:
data = mysocket.recv(512)
print repr(data)
mysocket.close()
가 잘 작동하지만 서버가 출력을 생성하지 않습니다 다음은 서버입니다. 나는 네트워크 프로그래밍에 전혀 경험이 없으며 뭔가를 놓친 것 같아. 대신
(속삭임) __twisted__ –
고마워,하지만 가능한 한 간단하게하고 싶다.) – qutron
Twisted는 소켓을 사용하는 것보다 훨씬 간단하다. 스레드에 대해 걱정할 필요조차 없습니다. Twisted는 재즈를 연주하는 __all__을합니다. –