В: есть ли способ сделать это, используя только один порт на стороне сервера / клиента?
Ну, это более простая часть.Нет, это не достижимо.Наличие только одной телефонной будки в колледже будет звонить в коридоре, но никогда не поможет направить звонок на соответствующий факультет, тем более правильно добраться до предполагаемого профессора квантовой механики на стороне вызывающего абонента (а не изобразительного искусства).
Использование только одного порта означает возможность предоставить для общего доступа один и только один масштабируемый шаблон формальной связи ZeroMQ Archetype AccessPoint и (за исключением очень специфического PAIR/PAIR
Archetype распределенного поведения) всегда существует какое-то жестко распределенное поведение взаимосвязанных агентов: AccessPoint -s.
Это означает, что использование одного порта дает только один и только один вид такого распределенногоПоведение, а не смесь их.
Это также отвечает вашей первой части.Если архетип распределенного поведения REQ/REP
использовался в направлении от клиентских узлов к серверу, а другой архетип распределенного поведения REQ/REP
должен был использоваться в противоположном направлении от сервера к клиентским узлам, эти (направленные) сервисы не могут сосуществовать в одном и том же address:port
.
Вам также могут понравиться посты здесь, в StackOverflow, о взаимных тупиках, которых невозможно избежать, в которые попадут распределенные REQ/REQ
FSA.
Иерархия ZeroMQ объяснено менее чем за пять секунд
НЕВОЗМОЖНО DEADLOCKS