기본적으로 나는이 문제가 있습니다. 첫 번째 클래스, 즉 서버는 클라이언트가 .connect()
일 때까지 기다리고 클라이언트가 연결되면 서버는 클라이언트에 데이터를 보냅니다.Client가 .connect()를 기다리는 스레드를 중지하는 방법은 무엇입니까? <p></p> 내가 ZMQ 다른 프로그램에 데이터의 일부 조각을 게시 할 <strong><code>PUB/SUB</code></strong> 공식적인 패턴을 사용하기 위해 사용
저는 ZMQ REQ/REP
을 사용하여 서버와 클라이언트를 동기화합니다.
이 Server.py
입니다 :
class PublishThread (threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
socketPub.bind("tcp://127.0.0.1:4002")
syncservice.bind('tcp://127.0.0.1:5001')
def run(self):
while True:
subscribers = 0
topic = b"PHONEBOOK"
while subscribers < 1:
# Here we wait for client to connect. If the client doesn't
#connect, this is where this thread will "hang"
syncservice.recv()
# Send response to client
syncservice.send(b'')
subscribers += 1
socketPub.send_multipart([topic, data1])
subscribers = 0
Q1 : 내 프로그램을 종료 할 때가 어떻게이 스레드를 중지 할 수 있습니다?
스레드가 실행 중이고 클라이언트를 기다리고 있기 때문에 프로그램을 종료하려고 할 때 프로그램이 "중단"됩니다.
질문 2 : 어떻게 구현하는 것이 가장 좋을 것이라고 생각하십니까?
질문 3 :REQ/REP
이외의 다른 방법이 있습니까?
응답하지 않는 코드에 시간 초과 추가 –
이 코드는 고품질 질문을 게시하는 ** StackOverflow 승격 된 MCVE 메서드 **와 거리가 다릅니다. 텍스트 상태 (cit. :) "... 서버 ... 클라이언트 ... REQ/REP"하지만 이러한 요소는 코드에 없습니다. ** 커뮤니티에 진단 및 수정을 요청하는 문제를 재현 할 수있는 서버 및 클라이언트 **에 대한 완전한 대표 MCVE를 포함하도록 질문을 업데이트하십시오. ** 이것은 모든 종류의 MCVE 관련 문제를 건설적으로 해결하고 토론하기 위해 StackOverflow 선호 방식입니다 **. 어쨌든 **이 위대한 지식의 커뮤니티 **에 오신 것을 진심으로 환영합니다. – user3666197