Как мы можем жестко закодировать номер порта в клиенте в двухтактном сокете zmq

#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. Спасибо, Штеффен.. Ваш комментарий был действительно полезен.