Создать конечную точку для связи
#include <sys/types.h>#include <sys/socket.h>int socket( int domain,int type,int protocol );
<sys/socket.h>.libsocket
Функция socket() создает конечную точку для связи и возвращает дескриптор.
Сокеты SOCK_STREAM
Сокеты SOCK_STREAM - это полнодуплексные потоки байт, похожие на каналы. Потоковый сокет должен быть в подключенном состоянии до того, как по нему будут отправлены или получены какие-либо данные. Чтобы создать соединение с другим сокетом используется connect().
После подключения сокета можно передавать данные, используя read() и write() или варианты send() и recv(). По завершении сессии могут быть вызваны close(). Внеполосные данные также могут передаваться (как описано в send()) и приниматься (как описано в recv()).
Протоколы связи, используемые для реализации сокета SOCK_STREAM, гарантируют, что данные не будут потеряны или дублированы. Если часть данных, для которой протокол пира имеет буферное пространство, не может быть успешно передана в течение разумного промежутка времени, соединение считается разорванным, и результат таких вызовов будут указывать на ошибку, возвращая -1 и устанавливая errno в ETIMEDOUT.
Сокеты SOCK_DGRAM и SOCK_RAW
С помощью сокетов SOCK_DGRAM и SOCK_RAW датаграммы могут быть отправлены получателям, указанным в вызовах send(). Датаграммы обычно принимаются с помощью recvfrom(), которая возвращает следующую датаграмму с ее адресом возврата.
Вызов ioctl()
Возможно использование функции ioctl() для указания группы процессов, которые будут принимать сигнал SIGURG по мере поступления внеполосных данных. Вызов также может включить оповещения о событиях воода/вывода при помощи значения SIGIO.
Параметры на уровне сокета
Работа сокетов контролируется параметрами на уровне сокетов. Эти параметры определены в файле <sys/socket.h>. Используйте setsockopt() и getsockopt(), чтобы установить и получить параметры.
Дескриптор сокета. Если возникла ошибка функция возвращает -1, код ошибки записывается в errno.
POSIX 1003.1
По умолчанию, socket() взаимодействует со стеком TCP/IP, управляющим частью пространства имен /dev/socket. Можно изменить это поведение, установив переменную среды SOCK.
ICMP6, ICMP, INET6, IP6, IP, IPsec, ROUTE, TCP, UDP, UNIX протоколы
accept(), bind(), close(), connect(), getprotobyname(), getsockname(), getsockopt(), ioctl(), listen(), read(), recv(), select(), send(), shutdown(), socketpair(), write()
Предыдущий раздел: Описание API сетевой библиотеки