Совокупная информация об адресе, порте программы-адресата (абонента), модели соединения, протоколе взаимодействия составляет т.н. сокет (конечная абонентская точка), формально представляющий собой структуру данных. Существует несколько видов сокетов:
struct sockaddr {
u_char sa_family; /* Семейство адресов (домен) */
char sa_data[]; }; /* Адрес сокета */
struct sockaddr_in {
u_char sin_len; /* Длина поля sockaddr_in (для FreeBSD) */
u_char sin_family; /* Семейство адресов (домен) */
u_short sin_port; /* Номер порта */
struct in_addr sin_addr; /* IP-адрес */
char sin_zero[8]; }; /* Поле выравнивания */
где struct in_addr {
n_int32_t s_addr}.
Создается сокет при помощи системного вызова socket().
#include <sys/socket.h>