0
파이썬에서 멀티 스레딩과 소켓을 배우고 있지만 문제가 생겼습니다. 같은 컴퓨터에있는 여러 클라이언트의 데이터를 받아서 인쇄 할 서버를 만들려고합니다. 여기에 지금까지 내 서버 코드 :동일한 컴퓨터에있는 다중 소켓 스레드
import socket
import threading
def conn(HOST, PORT, BUFSIZE):
serversock = RecvConnection(HOST, PORT)
serversock.listen(BUFSIZE)
class RecvConnection(object):
def __init__(self,host, port, sock=None):
if sock == None:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
else:
self.sock = sock
self.sock.bind((host, port))
def listen(self, buffsize):
self.sock.listen(5)
clisock, (remhost, remport) = self.sock.accept()
while 1:
print clisock.recv(buffsize)
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
threading.Thread(target=conn, args=(HOST, PORT, BUFSIZ,)).start()
문제는 내 클라이언트 파일의 하나의 인스턴스 만 내 서버에 의해 처리 될 것이다, 그래서 내 클라이언트의 첫 번째 인스턴스에 의해 전송 된 데이터 만 보여줍니다. 내 고객 코드는 다음과 같습니다.
import socket
import threading
class CreateConnection(object):
def __init__(self, sock=None):
if sock is None:
# Create a socket
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
else:
self.sock = sock
def connect(self, host, port):
# Connect to host, port
self.sock.connect((host, port))
class Communication(CreateConnection):
def sendMsg(self, msg):
self.sock.send(msg)
HOST = 'localhost'
PORT = 21567
cltsock = Communication()
cltsock.connect(HOST, PORT)
while 1:
msg = raw_input('> ')
cltsock.sendMsg(msg)
누구든지 이런 일이 일어나도록 도와 줄 수 있습니까? 감사합니다.
... 나는에 넣어 시도 1은 그렇지만 그저 나에게 뭔가 잘못되었다고 말하자. P – Estarius
나는 나의 대답을 확장했다. – MRAB
귀하의 제안은 완벽하게 잘 작동합니다, 지연에 대해 사과드립니다! 고마워. 그러나 누군가가 스레드 줄 끝에 .start()를 추가하는 것을 잊지 않으려한다면 – Estarius