Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Функции чтения и записи




Может быть использовано 3 возможных набора функций:

 

ssize_t read(int sock, void *buf, size_t count);

ssize_t write(int sock, const void *buf, size_t count);

 

sock – сокет-дескриптор;

*buf – адрес, по которому надо поместить прочитанные (в случае read), либо извлечь записываемые данные(в случае write);

count – количество передаваемых байт данных;

 

Функции, аналогичные файловым. Вместо дескриптора файла указывается дескриптор сокета, а также несколько отличается семантика их работы (см. выше). Типы ssize_t и size_t отображаются на один из целых типов (обычно int). Применимы только для потоковых сокетов.

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

 

ssize_t recv(int sock, void *buf, size_t count, int flags);

ssize_t send(int sock, const void *buf, size_t count, int flags);

 

flags – опции, определяющие режим передачи данных.

 

Функции отличаются от предыдущих только последним параметром. Важнейшая из опций - MSG_OOB задает режим работы со срочными данными.

Третий набор функций позволяет дополнительно задать и получить адрес удаленного процесса:

 

ssize_t recvfrom(int sock, void *buf, size_t count, int flags, struct sockaddr *from, socklen_t *fromlen);

ssize_t sendto(int sock, const void *buf, size_t count, int flags, const struct sockaddr *to, socklen_t tolen);

 

*to – адрес структуры, в которой содержится сокет-адрес назначения;

tolen – длина этого адреса;

*from - адрес структуры, куда требуется восстановить сокет-адрес отправителя;

*fromlen – адрес целой переменной, в которую надо поместить длину сокет-адреса.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных