Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Функції



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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...