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

Встановлення зв'язку



З боку клієнта зв'язок встановлюється за допомогою стандартної функції connect:

error = connect (s, serveraddr, serveraddrlen);

яка ініціює встановлення зв'язку на сокеті, використовуючи дескриптор сокета s та інформацію зі структури serveraddr, що має тип sockaddr_in, яка містить адресу сервера і номер порту на який треба встановити зв'язок. Якщо сокет не був пов'язаний з адресою, connect автоматично викличе системну функцію bind.

З боку сервера процес встановлення зв'язку складніший. Коли сервер хоче запропонувати один зі своїх сервісів, він пов'язує сокет із загальновідомим адресом, що асоціюється з даним сервісом, і пасивно слухає цей сокет. Для цих цілей використовується системний виклик

error = listen (s, qlength);

де s це дескриптор сокета, а qlength це максимальна кількість запитів на встановлення зв'язку, які можуть стояти в черзі, чекаючи обробки сервером; ця кількість може бути обмежене особливостями системи.

Коли сервер отримує запит від клієнта й приймає рішення про встановлення зв'язку, він створює новий сокет і пов'язує його з асоціацією, еквівалентною слухаючому сокету. Для Internet домену це означає той же самий номер порту. Для цієї мети використовується системний виклик accept:

newsock = accept (s, clientaddr, clientaddrlen);

Сокет, асоційований клієнтом, і сокет, який був повернутий функцією accept, використовуються для встановлення зв'язку між сервером і клієнтом.





Дата публикования: 2015-10-09; Прочитано: 196 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



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