1

Тема: Як то взагалі працювати з UDP-протоколом?

Прювєт XD От я ж довблюся

Прихований текст

хаха!

з тим UDP-сервером, і от якось дуже сильно заплутався в певних методах.
Тут питання не стільки про C++ або Boost.Asio, як саме про логіку UDP-серверу, тому що, певно, порядок дій на різних системах та в різних МП однаковий.
У нас є парочка методів:

  • async_receive

  • async_receive_from

  • send

  • send_to

Та об'єкт:

  • EndPoint

Ну от навіть мені очевидно, що всі методи зі словами from, або to, мають приймати, або відсилати дані з/в точно зазначеного EndPointa, адже EndPoint (кінцева точка), визначає адресу комп'ютера в мережі.
Але як саме мені прийняти дані на сервері?
Спочатку я використовував метод async_receive_from, окрім стандартних параметрів, буферу, хандлеру, він приймає ще й об'єкт типу EndPoint, в котрий, за логікою, мала б записуватись кінцева точка комп'юктєра, від котрого прийшли дані.
Але на одному з форумів мені сказали, що треба приймати дані з async_receive, тому що ми не знаємо, від кого саме вони прийдуть.
І тут я заплутався...
Як же все це робити правильно, га?

2

Re: Як то взагалі працювати з UDP-протоколом?

ааа, все окей, той чувак написав, що зтупив, ще й в оману мене ввів...
а мені ото хтілось попрокрастінірувати, чи як воно там зветься, а не розбиратись самому

3

Re: Як то взагалі працювати з UDP-протоколом?

Я заплуууутааавсяяяяя  *SORRY*

От є функції відправки і прийому. І кінцеві точки.
На сервері, аби прийняти дані, я створюю кіінцеву точку та байндю її socket.bind(endpoint), після цього сервер зможе приймати повідомлення, котрі клієнт відправляє йому на цей порт.
Зрозуміло, що клієнт заздалегідь має знати ip та порт серверу.
Але як самому клієнту приймати повідомлення від серверу? Він же теж має слухати якийсь порт? Але сервер же не може знати наперед ip та порти всіх клієнтів.
І як, питається, клієнт має приймати дані від серверу?

4

Re: Як то взагалі працювати з UDP-протоколом?

Тут ідеологія в принципі така: клієнт тільки говорить, сервер тільки слухає. Для обміну потрібні і клієнт, і сервер з обох боків. Тобто клієнт додатку містить мережеві клієнт і сервер, так само сервер додатку.
Як дізнатися клієнту додатку, де сервер додатку? З налаштувань (прописаних в коді, в файлі, на відомому мережевому сервері) або бродкастом спитати в місцевої мережі. Сервер отримає повідомлення і відправить відповідь, так DHCP працює.

Подякували: FakiNyan1

5

Re: Як то взагалі працювати з UDP-протоколом?

dct asuyz? gfyt rjfkf