По сути, когда я перезапускаю процесс C++ на удаленном компьютере и запускаю тест, он получает правильный ответ и последующие запуски теста (без завершения процесса на удаленном компьютере), что приводит к ошибке «Ресурс временно недоступен».
Тестовый код Python, связанный с сокет:
Код: Выделить всё
def connect_sub(remote_machine_ip):
context = zmq.Context()
sock = context.socket(zmq.SUB)
sock.setsockopt_string(zmq.SUBSCRIBE, '')
try:
sock.setsockopt(zmq.RCVTIMEO, 10000)
sock.connect(f'tcp://{remote_machine_ip}:5570')
except socket.error as e:
info(f"research socket error : {e}")
return sock
def read_research(sock):
try:
message = sock.recv()
info("Got message on research socket")
except zmq.error.Again as e:
info(f"Error on socket : {e}")
def gather_research(sock):
researcher = threading.Thread(target=read_research, args=(sock))
researcher.start()
return researcher;
def send_receive(ip):
researcher = gather_research(*connect_sub(ip))
# send message to remote machine C++ process here.
researcher.join()
send_receive(remote_machine_ip)
Код: Выделить всё
// Below code is in a constructor
socket = zmq_socket(ZContext::context(), ZMQ_PUB);
endpoint_ = "tcp://" + my_ip + ":" + "5570";
zmq_bind(socket, endpoint_.c_str());
// Below code is in a loop, when we receive a message, will send the response
socket.send(msg);
Я подумал, что это может быть проблема со временем, и увеличил время ожидания сокета в протестируйте до 10 секунд (вместо 200 миллисекунд), но бесполезно. Может кто-нибудь помочь мне, если есть какая-либо проблема, вызывающая эту проблему.
Примечание: tcpdump показывает, что локальный компьютер получает пакеты с удаленного IP-адреса, но тест не может получить сообщение.
Подробнее здесь: https://stackoverflow.com/questions/792 ... st-from-se
Мобильная версия