Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
socket () створює кінцеву точку з'єднання і повертає дескриптор socket() приймає три аргументи:
· domain, який вказує на сімейство протоколів створюваного сокета. Цей параметр задає правила використання іменування і формат адреси. Наприклад:
o PF_INET для мережевого протоколу IPv4 або
o PF_INET6 для IPv6.
o PF_UNIX для локальних сокетів (використовуючи файл).
· type (тип) один з:
o SOCK_STREAM надійна потокооріентірованна служба (TCP) (сервіс) або потоковий сокет
o SOCK_DGRAM служба датаграмм (UDP) або Датаграммним сокет
o SOCK_SEQPACKET надійна служба послідовних пакетів
o SOCK_RAW Сирий сокет - сирий протокол поверх мережевого рівня.
· protocol визначає використовуваний транспортний протокол. Найпоширеніші - це IPPROTO_TCP, IPPROTO_SCTP, IPPROTO_UDP, IPPROTO_DCCP. Ці протоколи вказані в <netinet / in.h>. Значення «0» може бути використано для вибору протоколу за замовчуванням із зазначеного сімейства (domain) і типу (type).
Функція повертає -1 у разі помилки. Інакше, вона повертає ціле число, що представляє присвоєний дескриптор.
gethostbyname () і gethostbyaddr () повертають покажчик на об'єкт типу struct hostent, що описує інтернет-вузол по імені або за адресом, відповідно. Ця структура містить або інформацію, отриману від сервера імен або довільні поля з рядка в /etc/hosts. Якщо локальний сервер імен не запущений, то ці підпрограми переглядають /etc/hosts. Функції приймають такі аргументи:
· name, що визначає ім'я хоста. Наприклад: www.google.com.ua
· addr, що визначає покажчик на struct in_addr, що містить адреса хоста.
· len, що визначає довжину в байтах addr.
· type, що визначає тип області адрес хоста. Наприклад: PF_INET
Функції повертають NULL-покажчик у разі помилки. У цьому випадку може бути перевірена додаткова ціла h_errno для виявлення помилки або неправильного чи невідомого хоста. В іншому випадку повертається коректна struct hostent *.
connect () повертає ціле число, що представляє код помилки: 0 означає успішне виконання, а -1 свідчить про помилку.
Деякі типи сокетів працюють без встановлення з'єднання, це в основному стосується UDP-сокетів. Для них з'єднання набуває особливого значення: мета за замовчуванням для здійснення та отримання даних присвоюється переданому адресу, дозволяючи використовувати такі функції як send () і recv () на сокетах без встановлення з'єднання.
Завантажений сервер може відкинути спробу з'єднання, тому в деяких видах програм необхідно передбачити повторні спроби з'єднання.
bind () пов'язує сокет з конкретною адресою. Коли сокет створюється за допомогою socket(), він асоціюється з деяким сімейством адрес, але не з конкретним адресом. До того як сокет зможе прийняти вхідні з'єднання, він повинен бути пов'язаний з адресом. Bind () приймає три аргументи:
· sockfd - дескриптор, що представляє сокет при прив'язці
· serv_addr - покажчик на структуру sockaddr, що представляє адреса, до якого прив'язуємо.
· addrlen - поле socklen_t, що представляє довжину структури sockaddr.
Повертає 0 при успіху і -1 при виникненні помилки.
accept () використовується для прийняття запиту на встановлення з'єднання від віддаленого хоста. Приймає такі аргументи:
· sockfd - дескриптор слухача сокета на прийняття з'єднання.
· cliaddr - покажчик на структуру sockaddr, для прийняття інформації про адресу клієнта.
· addrlen - покажчик на socklen_t, що визначає розмір структури, що містить клієнтський адресу і переданої в accept (). Коли accept () повертає деяке значення, socklen_t вказує скільки байт структури cliaddr використано в даний момент.
Функція повертає дескриптор сокета, пов'язаний з прийнятим з'єднанням, або -1 у разі виникнення помилки.
Дата публикования: 2015-10-09; Прочитано: 221 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!