서버 측 (publisher0)에서 데이터를 단일 클라이언트 (구독자)로 스트리밍하기 위해 2 개의 소켓 (다른 포트 포함)을 사용하고 싶습니다. 각 소켓은 센서 중 하나에서 데이터를 스트리밍합니다 : 센서의 샘플링 속도가 다릅니다. 내가이 특정 사례에 대한 시작 코드를 찾을 수 없었으므로, select를 사용하라는 제안에 대한 답변을 찾았습니다. 아래 코드는 지금까지 가지고있는 코드입니다. : 2 개 파일을 시작한 후, 코드는 가입자와 게시자 측 모두에 달려 아무것도 인쇄되지다중 소켓 (비동기)
publisher.py
import socket
import select
sock1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock1.bind(('', 23000))
sock2.bind(('', 23001))
sock1.listen(1)
sock2.listen(1)
clisock1, (remhost, remport) = sock1.accept()
clisock2, (remhost, remport) = sock2.accept()
clisocks = [clisock1, clisock2]
while 1:
ready_socks,_,_ = select.select(clisocks, [], [])
for sock in ready_socks:
sock.send(b"Hello World\n")
clisock1.close()
clisock2.close()
. 617,451,515,
subscriber.py
import socket
import select
sock1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock1.connect(('', 23000))
sock2.connect(('', 23001))
socks = [sock1, sock2]
while True:
ready_socks,_,_ = select.select(socks, [], [])
for sock in ready_socks:
data, addr = sock.recvfrom(100) # This is will not block
print("received message:", data)
내가 손해를보고 나는, 나는 매우 몇 가지 제안을 부탁드립니다.
고맙습니다. +100. 당신이 제안한 변화를 만들었습니다. 코드가 작동 중입니다. – JMarc