#linux #sockets #zeromq #tcpclient #czmq
#linux #сокеты #zeromq #tcpclient #czmq
Вопрос:
В случае подключения к серверу zmq клиент zmq выберет случайный номер порта из локального диапазона. Обычно в случае любого tcp-соединения мы должны иметь возможность привязывать и подключать клиент к серверу. И, следовательно, клиент может использовать фиксированный номер порта (номер порта src).
Как мы можем добиться этого в случае двухтактного сокета zmq? Пожалуйста, любой пример.
Я пытался
sender.bind("tcp://eth0:50000");
receiver.bind("tcp://eth0:50001");
sender.connect("tcp://10.58.171.74:31055");
receiver.connect("tcp://10.58.171.74:31056");
но я мог видеть, что порты открыты, как показано ниже, в настройке клиента.
tcp 0 0 10.244.0.12:50000 0.0.0.0:* LISTEN 1/./client
tcp 0 0 10.244.0.12:50001 0.0.0.0:* LISTEN 1/./client
tcp 0 0 10.244.0.12:46438 10.58.171.74:31056 ESTABLISHED 1/./client
tcp 0 0 10.244.0.12:33520 10.58.171.74:31055 ESTABLISHED 1/./client
Вместо этого мое ожидание было
10.244.0.12:50000 10.58.171.74:31056 ESTABLISHED
10.244.0.12:50001 10.58.171.74:31056 ESTABLISHED
Не могли бы вы, ребята, помочь мне добиться этого.
Комментарии:
1. сокеты zmq — это не настоящие (BSD) сокеты, а абстракция очереди сообщений, которая обеспечивает аналогичную (но обратите внимание на ту же) семантику. На самом деле в одном сокете zmq может быть несколько подключений underlyingTCP, поэтому привязка к определенному источнику TCP ip: port не имеет смысла. Что касается того, что на самом деле означают bind и connect — см. Документацию .
2. Спасибо, Штеффен.. Ваш комментарий был действительно полезен.