Linux: Полное руководство
Шрифт:
2. Связать сокет — функция bind.
3. Установить связь с удаленным компьютером (клиенту — установить связь, а серверу — ожидать установления связи).
4. Произвести обмен данными — функции recv и send.
5. Завершить сеанс связи — close и shutdown.
Библиотечные функции для работы с сокетами находятся в заголовочном файле sys/socket.h, поэтому для любой сетевой программы обязательна следующая директива:
27.3.2. Создание и связывание сокета
Основная
♦ socket — создание сокета;
♦ bind — связывание сокета;
♦ close и shutdown — завершение сеанса связи.
Начнем по порядку, а именно, с функции socket. Ее прототип следующий:
Первый аргумент определяет набор протоколов. Особо вдаваться в подробности не будем — просто всегда в качестве параметра domain передавайте значение AF_INET, что означает использование стека протоколов TCP/IP.
Аргумент type позволяет установить режим работы: с установлением соединения и без такового — значения SOCK_STREAM и SOCK_DGRAM соответственно. Для непосредственного доступа к протоколам IPv4 используется параметр SOCK_RAW. Для его использования нужно подключить заголовочный файл:
Третий параметр лучше всего установить равным 0. В этом случае будет выбран протокол по умолчанию в зависимости от режима работы:
TCP, если мы выбрали режим SOCK_STREAM;
UDP, если мы выбрали SOCK_DGRAM.
Если вы установили значение SOCK_RAW, вы можете указывать в качестве последнего параметра непосредственно значения из файла
Листинг 27.2. Фрагмент файла /etc/protocols
Если сокет создан успешно, функция возвращает дескриптор сокета — целое положительное число. В случае ошибки функция возвращает значение -1 (отрицательное число). Вот небольшой пример:
Чтобы
Первый аргумент функции задает дескриптор нашего сокета. Второй — это указатель на структуру типа sockaddr. Все структуры данного типа определены в файле
Мы программируем для сети TCP/IP, поэтому будем использовать структуру sockaddr_in (для IPv4) или sockaddr_in6 (для IPv6).
Последний аргумент — это длина выбранной нами структуры (sockaddr_in) в байтах.
Структура sockaddr_in определена в файле
Хранилище
Фантастика:
ужасы и мистика
рейтинг книги
Жизнь животных. Рыбы и амфибии
Жизнь животных
Научно-образовательная:
биология
рейтинг книги
Питомник. Книга 1
Детективы:
триллеры
рейтинг книги
Симбионты
Фантастика:
научная фантастика
рейтинг книги
Библия Раджниша. Том 1. Книга 1
Религия и эзотерика:
самосовершенствование
эзотерика
рейтинг книги
Ворон
Фантастика:
попаданцы
фэнтези
гаремник
рейтинг книги
Ровена
1. Ровена
Фантастика:
фэнтези
рейтинг книги
Человек и его символы
Научно-образовательная:
психология
рейтинг книги