ТОР 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 – адрес целой переменной, в которую надо поместить длину сокет-адреса. Не нашли, что искали? Воспользуйтесь поиском:
|