|
|
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
Как-то не очень внимательно рассмотрел схему "Запрос - Ответ" (REQ - REP). А тут отладке приложения обнаружил, что "сервер" (там, где сокет REP) получает сообщение от клиента (там, где сокет REQ) не после отправки клиентом сообщения, а только после того, как клиент обратится к процедуре считывания ответа: receive или polling (zmq_msg_recv/zmq_poll). То есть, клиент отправляет сообщение (zmq_msg_send), что-то делает дальше, но сервер ничего не видит. Пока клиент не захочет считать ответ от сервера (zmq_msg_recv или zmq_poll). В момент обращения клиента к zmq_msg_recv() или к zmq_poll() сервер фиксирует входное сообщение (zmq_msg_recv() или zmq_poll()) и может начать формировать ответ (zmq_msg_send). Обращение же сервера к zmq_msg_send отправляет сообщение клиенту сразу. Что, в общем, логично, если вспомнить работу по схеме "Запрос - Ответ" (REQ - REP). Но почему-то сие ускользнуло от моего понимания. ... ...полезно, например, если в режиме REQ-REP нужно серверу отправить служебный сигнал, не требующий подтверждения. Для этого нужно не просто отправить сообщение, а еще и обратиться к zmq_msg_recv() с минимальным временем ожидания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2015, 12:16 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
ZeroMQКак-то не очень внимательно рассмотрел схему "Запрос - Ответ" (REQ - REP). А тут отладке приложения обнаружил, что "сервер" (там, где сокет REP) получает сообщение от клиента (там, где сокет REQ) не после отправки клиентом сообщения, а только после того, как клиент обратится к процедуре считывания ответа: receive или polling (zmq_msg_recv/zmq_poll). То есть, клиент отправляет сообщение (zmq_msg_send), что-то делает дальше, но сервер ничего не видит. Пока клиент не захочет считать ответ от сервера (zmq_msg_recv или zmq_poll). В момент обращения клиента к zmq_msg_recv() или к zmq_poll() сервер фиксирует входное сообщение (zmq_msg_recv() или zmq_poll()) и может начать формировать ответ (zmq_msg_send). Обращение же сервера к zmq_msg_send отправляет сообщение клиенту сразу. Что, в общем, логично, если вспомнить работу по схеме "Запрос - Ответ" (REQ - REP). Но почему-то сие ускользнуло от моего понимания. ... ...полезно, например, если в режиме REQ-REP нужно серверу отправить служебный сигнал, не требующий подтверждения. Для этого нужно не просто отправить сообщение, а еще и обратиться к zmq_msg_recv() с минимальным временем ожидания. А, не. Вовсе необязательно, что отправка сообщения будет отложена до receive или polling. Но - вполне возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2015, 13:30 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
PPAZeroMQКраткий обзор NanoMSG: https://hguemar.fedorapeople.org/slides/nanomsg/presentation.html NanoMSG под XP не пашет. CancelIoEx используется https://github.com/nanomsg/nanomsg/issues/102 Есть две хорошие новости по поводу nanomsg: 1. Один из пользователей форкнул код, реализовав замену CancelIoEx под WinXP. Пишет, что работает у него в продакшне. 2. Для nanomsg будет реализован IPC протокол под Windows, на основе Named Pipes. Что радует: так как как минимум один из компонентов ZMQ обычно "слушает" tcp порт. Это вызывает вопросы при инсталляция приложений, основанных на ZeroMQ со стороны антивирусов и фаерволов. ... а может, и в ZeroMQ реализуют IPC под Windows, так как ZMQ теперь успешно развивается без главного идеолога (который "все бросил" и стал делать nanomsg). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 01:15 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
[quot чччД]PPAпропущено... 1. Один из пользователей форкнул код, реализовав замену CancelIoEx под WinXP. Пишет, что работает у него в продакшне. . адрес? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2015, 13:24 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
PPA, что-то результат потерял... :( Вот отсюда можно за хвост потянуть: https://github.com/nanomsg/nanomsg/pull/349 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2015, 15:38 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
В ветку ZMQ 4.1 вернули поддержку WindowsXP (которую в декабре 2015го лихо убрали из 4.1.4). Брать здесь: https://github.com/zeromq/zeromq4-1 В ветку ZMQ 4.2 тоже вернули поддержку WindowsXP, но не полностью: новые сокеты (ZMQ_SERVER/ZMQ_CLIENT) будут доступны в Windows Vista и новее. Брать здесь: https://github.com/zeromq/libzmq И то хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2016, 05:22 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
чччД, А ipv6 пробовал под виндой? у меня простой клиент не пашет. WindowsXP + IP6 Teredo под linux все хорошо. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. E:\>test-console.exe Client Starting! ZeroMQ version: 4.2.0 Sending: hello - 0 Assertion failed: Bad protocol option (q:\vc15\r5xx\zmq\src\ip.cpp:116) может сталкивался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 14:25 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
А разве в Windows XP было IP v6 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 14:31 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
defecator ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 15:24 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
defecator, +1. ipv6 в Win XP требуется включать. PPA, попробуй, набери в командной строке: Код: c# 1. PPA, "Просто так" ipv6 - в Vista и новее. Там даже при выходе релиза 4.1.4 лихо отменили поддержку WinXP из-за этого: заюзали функцию if_nametoindex() ... Ну и просто Код: pascal 1. Потом, в 4.1.5 вернули ( https://github.com/zeromq/zeromq4-1 ). Код: pascal 1. И в 4.2.0 - тоже, за исключением блока, обеспечивающего новые сокеты ZMQ_CLIENT/ZMQ_SERVER. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 15:31 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
А движка для мультиплеера на них нету? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 16:58 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
Feg16А движка для мультиплеера на них нету? Что за "движок мультиплеера"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 20:57 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
чччДЧто за "движок мультиплеера"?Логика над сокетами - коннект, дисконнект, отправка подписанного пакета и т.п. Т.е. вся та обвязка которая необходима для подключения нескольких клиентов к серверу, и сервер который может обрабатывать данные от нескольких клиентов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 21:04 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
Feg16чччДЧто за "движок мультиплеера"?Логика над сокетами - коннект, дисконнект, отправка подписанного пакета и т.п. Т.е. вся та обвязка которая необходима для подключения нескольких клиентов к серверу, и сервер который может обрабатывать данные от нескольких клиентов Ну так да. Выбираешь нужный тип сокета, и вперед. К примеру, режим "запрос-ответ": клиент отправляет запрос и ждет ответ. Сервер, получи запрос, отвечает только на него и только этому клиенту. Реализация. Используются сокет типа REQ и сокет типа REP. К серверу (там сокет REP) коннектится куча клиентов (используя сокет REQ). Все запроси к серверу выстраиваются в очередь, сервер их по очереди разгребает и возвращает ответ именно тому клиенту, от которого получил запрос. ... Если нужно общаться одновременно несколькими клиентами не по очереди, а одновременно (например, получить запрос от одного, обработать его и отправить результат другому) - используется пара сокетов Dialer - Router. При этом состав клиентского сообщения автоматически добавляется идентификатор клиента (назначается автоматически или ручками на клиенте). То есть, к примеру, получаешь сообщение, меняешь в нем адрес и отправляешь обратно. А оно приходит не к отправителю, а к тому, чей адрес ты подставил. Вот тебе и прокси в три строки кода. Вопросы реконнекта при нестабильной связи встроены в движок, при падении сервера и его перезапуске восстановление связи происходит автоматом. Есть всякие там шифрации и подписи. Даже есть средства наблюдения за каталогами файловой системы в онлайне. Недостаток: основное назначение - для работы в локальных сетях по причинам архитектуры (можно заDDOSить, например). Ну и еще, до недавнего времени нельзя было сокеты передавать между вычислительными нитями. Особые правила работы для построения мультинитевых приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 21:30 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
так он хочет без низкоуровневых обёрток. Нужно что-то типа DirectPlay ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 21:32 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
defecator...типа DirectPlay Ну, тут кодировать - всего ничего (главное - придумать). Например, один из компов назначается "сервером", где клиенты регистрируются и где хранится состояние клиентов. А потом ты, запросив у сервера данные, сможешь напрямую общаться с другим, нужным тебе логическим клиентом. Тут ты сам выстраиваешь нужную архитектуру, какая твоей левой пятке приглянется, а не пытаешься натянуть существующую на собственное понимание прекрасного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 21:48 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
defecatorтак он хочет без низкоуровневых обёрток. Нужно что-то типа DirectPlayДа :) чччДТут ты сам выстраиваешь нужную архитектуруУвы рук всего две, и они уже заняты остальным, поэтому приходится для тех или иных моментов натягивать уже готовое решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 08:36 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
Feg16defecatorтак он хочет без низкоуровневых обёрток. Нужно что-то типа DirectPlayДа :) чччДТут ты сам выстраиваешь нужную архитектуруУвы рук всего две, и они уже заняты остальным, поэтому приходится для тех или иных моментов натягивать уже готовое решение. Так натяни готовое решение - тот же DirectPlay, тем более в винду он встроен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 08:42 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
defecator, DirectPlay начал устаревать ещё в Vista, и потихоньку из винды выпиливается. Что вместо него - я бы сам не прочь узнать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 11:50 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
GunSmokerdefecator, DirectPlay начал устаревать ещё в Vista, и потихоньку из винды выпиливается. Что вместо него - я бы сам не прочь узнать. так это же составная часть DirectX, как его могут выпилить-то ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 12:28 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
чччДdefecator, +1. ipv6 в Win XP требуется включать. PPA, попробуй, набери в командной строке: Код: c# 1. Я естественно включил ip6 в XP руками но проблема в самой либе оказалась в методе Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. IPV6_V6ONLY - This socket option is supported on Windows Vista or later. https://msdn.microsoft.com/en-us/library/windows/desktop/ms738574(v=vs.85).aspx Странно что в самой zmq не детектят версию винды и зовут этот метод как починить правльнее пока не знаю - убрал экраном IPV6_V6ONLY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 12:33 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
defecator, авторWarning: Microsoft DirectPlay has been deprecated. Deprecated components of Microsoft DirectX 9.0 for Managed Code are considered obsolete. While these components are still supported in this release of DirectX 9.0 for Managed Code, they may be removed in the future. When writing new applications, you should avoid using these deprecated components. When modifying existing applications, you are strongly encouraged to remove any dependency on these components. авторDirectPlay will be supported in DirectX DLLs for the lifetime of Microsoft Windows XP, but from the autumn of 2007 the headers and libraries — vital components if developers wanted to develop new programs that utilize the technology — were absent from the DirectX SDK. In Windows Vista, DirectPlay has been deprecated and DirectPlay Voice and DirectPlay's NAT Helper have been removed. В DirectX 10 и выше DirectPlay нет. В Vista и выше нет необходимых сетевых компонентов. Выпилили по аналогии с .hlp - при запуске программы в первый раз выводится запрос на скачку/установку пакета поддержки старья. Также выпилили DirectSound и DirectMusic. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 12:54 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
GunSmoker, сурово попилили движок, не знал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:05 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
Между тем, только что проверил - в Windows 1 (DirectX 11) есть интерфейсы DirectPlay. Запустил приложение, собранное аж 18.12.1999, и спокойно подключился Вроде ничего не ставил дополнительного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:13 |
|
||
|
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
|
|||
|---|---|---|---|
|
#18+
Вот исходники примитивного чата через DirectPlay, внутри есть EXE, откомпилёный ещё на Delphi 2 в 1999 году: http://rghost.ru/7q4zrQSGv Всё работает в Window 7.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:21 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39200271&tid=2039957]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
190ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
98ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 589ms |

| 0 / 0 |
