Книга: Системное программирование в среде Windows
Дейтаграммы
Дейтаграммы аналогичны почтовым ящикам и используются при сходных обстоятельствах. Соединение между отправителем и получателем отсутствует, а получателей может быть несколько. Ни почтовые ящики, ни дейтаграммы не гарантируют доставку данных получателю, а последовательные сообщения не обязательно будут получены в той же очередности, в которой они были отправлены.
Первым шагом при использовании дейтаграмм является создание сокета посредством вызова функции socket с указанием значения SOCK_DGRAM в поле type.
Далее необходимо использовать функции sendto и recvfrom, которые принимают те же аргументы, что и функции send и recv, но имеют по два дополнительных аргумента, относящихся к станции-партнеру. Так, функция sendto имеет следующий прототип:
int sendto(SOCKET s, LPSTR lpBuffer, int nBufferLen, int nFlags, LPSOCKADDR lpAddr, int nAddrLen);
lpAddr — указывает на адресную структуру, в которой вы можете задать имя конкретной системы и номер порта или же указать на необходимость рассылки дейтаграммы заданной совокупности систем.
Используя функцию recvfrom, вы указываете систему или системы (возможно, все), от которых вы хотите принимать дейтаграммы.
- Дейтаграммные соединения и дейтаграммы
- Пример: вывод IP-адреса получателя и флага обрезки дейтаграммы
- 22.3. Обрезанные дейтаграммы
- 8.7. Потерянные дейтаграммы
- Параметры сокета SO_REUSEADDR и SO_REUSEPORT
- 20.2. Широковещательные адреса
- Глава 15 Сокеты
- 20.3. Направленная и широковещательная передачи
- ГЛАВА 12 Сетевое программирование с помощью сокетов Windows
- Использование дейтаграмм для удаленного вызова процедур
- Задание адреса следующего транзитного узла
- 25.3. Эхо-сервер UDP с использованием сигнала SIGIO