Отправка и получение данных

Отправка и получение данных

Программы, использующие сокеты, обмениваются данными с помощью функций send и recv, прототипы которых почти совпадают (перед указателем буфера функции send помещается модификатор const). Ниже представлен только прототип функции send. 

int send(SOCKET s, const char * lpBuffer, int nBufferLen, int nFlags); 

Возвращаемым значением является число фактически переданных байтов. Значение SOCKET_ERROR указывает на ошибку.

nFlags — может использоваться для обозначения степени срочности сообщений (например, экстренных сообщений), а значение MSG_PEEK позволяет просматривать получаемые данные без их считывания.

Самое главное, что вы должны запомнить — это то, что функции send и recv не являются атомарными (atomic), и поэтому нет никакой гарантии, что затребованные данные будут действительно отправлены или получены. Передача "коротких" сообщений ("short sends") встречается крайне редко, хотя и возможна, что справедливо и по отношению к приему "коротких" сообщений ("short receives"). Понятие сообщения в том смысле, который оно имело в случае именованных каналов, здесь отсутствует, и поэтому вы должны проверять возвращаемое значение и повторно отправлять или принимать данные до тех пор, пока все они не будут переданы.

С сокетами могут использоваться также функции ReadFile и WriteFile, только в этом случае при вызове функции необходимо привести сокет к типу HANDLE. 

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Отправка и получение писем

Из книги Работа в Интернете автора Макарский Дмитрий

Отправка и получение писем Ящик зарегистрирован – самое время начать им пользоваться и написать первое письмо.Думая, кому написать первое письмо, не нужно теряться в догадках, вспоминая адреса почтовых ящиков друзей и знакомых. На тему адресата письма можно задуматься,


Отправка и получение почты в программе Outlook Express

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Отправка и получение почты в программе Outlook Express Работа с письмами в рассматриваемой почтовой программе несложна и не особо отличается от отправки и чтения почты через веб-интерфейс.Создание нового письма начинается с нажатия кнопки Создать, открывающей окно Создать


Передача и получение пользовательских данных состояния

Из книги Советы по Delphi. Версия 1.0.6 автора Озеров Валентин

Передача и получение пользовательских данных состояния Заключительным аспектом нашего рассмотрения асинхронных делегатов будет обсуждение последнего из аргументов метода BeginInvoke() (этот аргумент у нас до сих пор был равен null). С помощью этого параметра можно передать в


4.1. Получение структурированной информации из базы данных

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

4.1. Получение структурированной информации из базы данных Это упражнение развивает навыки представления структурных объектов данных и управления ими. Оно показывает также, что Пролог является естественным языком запросов к базе данных.База данных может быть


12.7.2. Отправка данных с сигналом

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

12.7.2. Отправка данных с сигналом Механизм siginfo_t также позволяет сигналам, которые посылают программы, присоединять к себе один элемент данных (этот элемент может быть указателем, что позволяет неявно передавать любой необходимый объем данных). Чтобы отправить данные,


17.6.2. Отправка и получение дейтаграмм

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

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


Отправка данных серверной программе

Из книги Работа в Интернете. Энциклопедия автора Ташков Петр Андреевич

Отправка данных серверной программе Предположим, мы создали несколько полей ввода, собирающих данные от пользователя. Как теперь отправить эти данные серверной программе?Прежде всего, их нужно поместить в переменные. Причем это должны быть переменные уровня клипа, т. е.


Получение данных от серверной программы

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

Получение данных от серверной программы Самый простой способ передать серверной программе данные и сразу же получить от нее результат их обработки — использовать действие loadVariabies или одноименный метод объекта movieClip. Это действие (метод) отправляет данные серверной


Получение информации о базе данных

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Получение информации о базе данных После того как вы создали базу данных и подтвердили создание (commit), вы можете в isql отобразить ее детали, используя команду SHOW DATABASE:SQL> SHOW DATABASE;Database: /opt/databases/mydatabase.fdbOwner: ADMINUSRPAGE_SIZE 8192Number of DB pages allocated = 176Sweep interval = 20000Forced Writes are ONTransaction - oldest =


Получение доступа к базе данных из gfix

Из книги Как приручить компьютер за несколько часов автора Ремнева Ирина

Получение доступа к базе данных из gfix Если вы соединяетесь с сервером удаленно, то в список переключателей вы должны включить имя пользователя и пароль для пользователя SYSDBA или для владельца базы данных. Такими переключателями являются:-pas[sword] <пароль> -u[ser]


Отправка и получение писем

Из книги автора

Отправка и получение писем Ящик зарегистрирован, самое время начать им пользоваться и написать первое письмо.Думая, кому написать первое письмо, не нужно теряться в догадках, вспоминая адреса почтовых ящиков друзей и знакомых. На тему адресата письма можно задуматься,


18.3. Получение данных акселерометра

Из книги автора

18.3. Получение данных акселерометра Постановка задачи Требуется указать операционной системе iOS, чтобы она посылала вашей программе данные от


18.5. Получение данных гироскопа

Из книги автора

18.5. Получение данных гироскопа Постановка задачи Требуется получать информацию о движении устройства от гироскопа, установленного в устройстве с


21.10. Отправка и получение

Из книги автора

21.10. Отправка и получение Программа для получения анонсов сеанса многоадресной передачи, показанная в предыдущем разделе, могла только получать дейтаграммы многоадресной передачи. Теперь мы создадим простую программу, способную и отправлять, и получать дейтаграммы


Получение, создание и отправка писем

Из книги автора

Получение, создание и отправка писем Чтобы написать письмо в Outlook Express, нужно нажать кнопку Создать сообщение на панели инструментов. Откроется чистый бланк письма, который нужно будет заполнить. Чистый бланк письма, который вы будете заполнятьПоле От заполняется