17.6.2. Отправка и получение дейтаграмм
17.6.2. Отправка и получение дейтаграмм
Для отправки и получения UDP-пакетов обычно используются четыре системных вызова[141]: send(), sendto(), recv(), recvfrom()[142].
#include <sys/types.h>
#include <sys/sockets.h>
int send(int s, const void * data, size_t len, int flags);
int sendto(int s, const void * data, size_t len, int flags,
const struct sockaddr * to, socklen_t toLen);
int recv(int s, void * data, size_t maxlen, int flags);
int recvfrom(int s, void * data, size_t maxlen, int flags,
struct sockaddr * from, socklen_t * fromLen);
Здесь во всех случаях параметр flags всегда равен нулю. В других ситуациях он может принимать множество значений, они подробно рассматриваются в [33].
Первый из названных вызовов send() может применяться только для тех сокетов, для которых IP-адрес назначения и порт устанавливались через вызов connect(). Он посылает первые len байтов, на которые указывает data, на другой конец сокета s. Данные передаются как единая дейтаграмма. Если параметр len задает слишком большое количество данных для передачи в одной дейтаграмме, то в переменной errno возвращается значение EMSGSIZE.
Следующий системный вызов sendto() работает аналогично send(), но позволяет указывать IP-адрес и номер порта назначения для неподключенных сокетов. Последние два параметра являются указателями на адрес сокета и длину адреса сокета. Применение этой функции не устанавливает адрес назначения для сокета; он остается неподключенным. Последующие вызовы sendto() могут передавать дейтаграммы в другие пункты назначения. Если аргумент to равен NULL, то функция sendto() ведет себя точно также как и send().
Системные вызовы recv() и recvfrom() подобны send() и sendto(), но они получают дейтаграммы, а не отправляют их. Оба вызова записывают одну дейтаграмму в data (не более чем *maxlen байт) и отбрасывают некоторую часть дейтаграммы, которая не помещается в буфер. Удаленный адрес, отправивший дейтаграмму, сохраняется в параметре from функции recvmsg(), если только его длина не превышает fromLen байт.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Отправка и получение данных
Отправка и получение данных Программы, использующие сокеты, обмениваются данными с помощью функций send и recv, прототипы которых почти совпадают (перед указателем буфера функции send помещается модификатор const). Ниже представлен только прототип функции send. int send(SOCKET s, const char *
Использование дейтаграмм для удаленного вызова процедур
Использование дейтаграмм для удаленного вызова процедур Обычно дейтаграммы применяются для реализации RPC. По сути дела, в самых распространенных ситуациях клиент посылает запрос серверу, используя дейтаграммы. Поскольку доставка запроса не гарантируется, клиент
17.6. Использование дейтаграмм UDP
17.6. Использование дейтаграмм UDP Наряду с тем, что большинство приложений пользуются преимуществами потокового протокола TCP, некоторые предпочитают применять UDP. Давайте рассмотрим несколько причин, по которым дейтаграммная модель без установления соединений,
2.3. UDP: протокол пользовательских дейтаграмм
2.3. UDP: протокол пользовательских дейтаграмм UDP — это простой протокол транспортного уровня. Он описывается в документе RFC 768 [93]. Приложение записывает в сокет UDP дейтаграмму (datagram), которая инкапсулируется (encapsulate) или, иначе говоря, упаковывается либо в дейтаграмму IPv4, либо
Отправка по TCP
Отправка по TCP Приняв все вышеизложенные термины и определения, посмотрим на рис. 2.15, где показано, что происходит, когда приложение записывает данные в сокет TCP. Рис. 2.15. Этапы записи данных в сокет TCP и буферы, используемые при этой записиУ каждого сокета TCP есть буфер
Отправка по UDP
Отправка по UDP На рис. 2.16 показано, что происходит, когда приложение записывает данные в сокет UDP. Рис. 2.16. Отправка данных через сокет UDPНа этот раз буфер отправки сокета изображен пунктирными линиями, поскольку он (буфер) на самом деле не существует. У сокета UDP есть размер
21.10. Отправка и получение
21.10. Отправка и получение Программа для получения анонсов сеанса многоадресной передачи, показанная в предыдущем разделе, могла только получать дейтаграммы многоадресной передачи. Теперь мы создадим простую программу, способную и отправлять, и получать дейтаграммы
Отправка и получение писем
Отправка и получение писем Ящик зарегистрирован, самое время начать им пользоваться и написать первое письмо.Думая, кому написать первое письмо, не нужно теряться в догадках, вспоминая адреса почтовых ящиков друзей и знакомых. На тему адресата письма можно задуматься,
Отправка SMS
Отправка SMS Все давно уже привыкли к SMS. В программе Skype сообщения посылаются не только с помощью чата, существует специальная функция отправки SMS. Однако это возможно только для тех контактов, которые содержат номера мобильных телефонов. Для того чтобы иметь возможность
Передача и прием дейтаграмм UDP
Передача и прием дейтаграмм UDP Класс QUdpSocket может использоваться для отправки и приема дейтаграмм UDP. UDP — это ненадежный, ориентированный на дейтаграммы протокол. Некоторые приложения применяют протокол UDP, поскольку с ним легче работать, чем с протоколом TCP. По протоколу
Отправка и получение писем
Отправка и получение писем Ящик зарегистрирован – самое время начать им пользоваться и написать первое письмо.Думая, кому написать первое письмо, не нужно теряться в догадках, вспоминая адреса почтовых ящиков друзей и знакомых. На тему адресата письма можно задуматься,
Отправка и получение почты в программе Outlook Express
Отправка и получение почты в программе Outlook Express Работа с письмами в рассматриваемой почтовой программе несложна и не особо отличается от отправки и чтения почты через веб-интерфейс.Создание нового письма начинается с нажатия кнопки Создать, открывающей окно Создать
Отправка SMS
Отправка SMS Наличие сотовой связи — несомненный плюс современной жизни. Однако, имея компьютер и доступ в Сеть, можно отправлять SMS на мобильные телефоны с помощью Интернета и некоторых рассматриваемых в этом разделе программ.SMS-ka Производитель Тип ОС Язык Размер,
Отправка SMS
Отправка SMS Набирать текст коротких сообщений на клавиатуре компьютера гораздо удобнее, чем на телефоне. Поэтому, находясь рядом со своим компьютером, можно этим воспользоваться. После нажатия кнопки Отправить SMS в главном окне программы на экране компьютера появляется
Получение, создание и отправка писем
Получение, создание и отправка писем Чтобы написать письмо в Outlook Express, нужно нажать кнопку Создать сообщение на панели инструментов. Откроется чистый бланк письма, который нужно будет заполнить. Чистый бланк письма, который вы будете заполнятьПоле От заполняется