Я немного поясню тем, кто также наткнулся на применение ZeroMQ, так как не хватает фундаментальной информации о том, как все это работает. В моей ситуации у меня есть сервер, который принимает соединения через сокет, поэтому данные могут быть отправлены и получены. Все данные, которые проходят через сокеты, проходят через tcp-пакеты (на низком уровне), но вам не нужно беспокоиться о том, как данные передаются в tcp-пакетах. С сокетами все, что вам нужно знать, это то, что вам нужно создать пакет байтов и отправить его на сервер. Сервер также вернет вам пакет байтов, и вы несете ответственность за то, как вы будете интерпретировать эти байты. Например, если я хочу отправить 2 байта данных на сервер, например, 1 байт значения 1 и другой байт значения 2, мне нужно будет создать и отправить 00000001 00000010 (без пробела :)). Сервер также вернет мне несколько байтов.
Дело в том, что с необработанными сокетами вы должны вручную реализовать протокол - правила. Зачем? Потому что вы должны вручную проверить полученный пакет, если он имеет правильную длину, правильные данные. Сервер и клиент должны согласовать формат данных, какой байт является состоянием, какие байты представляют длину пакета и какие байты представляют данные. Например, представьте, что сервер отправляет вам необработанные байты:
10001000 10010111 01101001 01111110 01110110 11100001
И клиент, и сервер должны знать, что означает каждый байт. Таким образом, в моей ситуации на сервере уже есть собственный анализатор и правила (его можно назвать пользовательским протоколом) о том, какая последовательность байтов должна поступить. Например, 1 байт - это команда запроса, 4 байта - размер пакета, 1 байт - состояние запроса, а остальные байты - данные. Когда вы общаетесь с серверами, используя более высокие протоколы, такие как HTTP, все это делается бесплатно, вы просто нажимаете или получаете данные и все. Кроме того, то же самое можно сказать и о ZeroMQ, так как он уже имеет свои собственные правила синтаксического анализа, поэтому вы просто извлекаете и извлекаете данные, но, как упоминалось ранее, и клиент, и сервер должны использовать эту библиотеку.
Когда я публиковал вопрос, я искал какую-то библиотеку, которая облегчает связь через сокеты, но не имеет собственного протокола. В настоящее время я пытаюсь использовать AsyncSocket.