Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Системні виклики sendto() і recvfrom()Содержание книги Поиск на нашем сайте
Для відправки датаграм застосовується системний виклик sendto(). До числа параметрів цього виклику входять:
Системний виклик повертає негативне значення при виникненні помилки і кількість реальна відісланих байт при нормальній роботі. Нормальне завершення системного виклику не означає, що датаграма вже покинула ваш комп'ютер! Датаграма спочатку поміщається в системний мережний буфер, а її реальна відправка може відбутися після повернення з системного виклику. Виклик sendto() може блокуватися, якщо в мережному буфері не вистачає місця для датаграми. Для читання прийнятих датаграм і визначення адреси одержувача (при необхідності) служить системний виклик recvfrom(). До числа параметрів цього виклику входять:
Системний виклик recvfrom() за умовчанням блокується, якщо відсутні прийняті датаграми, до тих пір, поки датаграма не з'явиться. При виникненні помилки він повертає негативне значення, при нормальній роботі – довжину прийнятої датаграми. Системні виклики sendto і recvfrom Прототипи системних викликів Опис системних викликів Системний виклик sendto призначений для відправки датаграм. Системний виклик recvfrom призначений для читання датаграм і визначення адреси відправника, що прийшли. За умовчанням за відсутності датаграм, що прийшли, виклик recvfrom блокується до тих пір, поки не з'явиться датаграма. Виклик sendto може блокуватися за відсутності місця під датаграму в мережному буфері. Даний опис не є повним описом системних викликів, а призначено тільки для використовування в нашому курсі. За повною інформацією звертайтеся до UNIX Manual. Параметр sockd є дескриптором створеного раніше сокета, тобто значенням, поверненим системним викликом socket(), через який відсилатиметься або виходитиме інформація. Параметр buff є адресою області пам'яті, починаючи з якою братиметься інформація для передачі або розміщуватиметься прийнята інформація. Параметр nbytes для системного виклику sendto визначає кількість байт, яке повинне бути передано, починаючи з адресою пам'яті buff. Параметр nbytes для системного виклику recvfrom визначає максимальну кількість байт, яке може бути розміщене в приймальному буфері, починаючи з адресою buff. Параметр to для системного виклику sendto визначає посилання на структуру, що містить адресу сокета одержувача інформації, яка повинна бути заповнена перед викликом. Якщо параметр from для системного виклику recvfrom не рівний NULL, то для випадку встановлення зв'язку через пакети даних він визначає посилання на структуру, в яку буде занесена адреса сокета відправника інформації після завершення виклику. В цьому випадку перед викликом цю структуру необхідно обнулити. Параметр addrlen для системного виклику sendto повинен містити фактичну довжину структури, адреса якої передається як параметр to. Для системного виклику recvfrom параметр addrlen є посиланням на змінну, в яку буде занесена фактична довжина структури адреси сокета відправника, якщо це визначено параметром from. Помітимо, що перед викликом цей параметр повинен указувати на змінну, що містить максимально допустиме значення такої довжини. Якщо параметр from має значення NULL, то і параметр addrlen може мати значення NULL. Параметр flags визначає режими використовування системних викликів. Розглядати його вживання ми в даному курсі не будемо, і тому беремо значення цього параметра рівним 0. Значення, що повертається У разі успішного завершення системний виклик повертає кількість реально відісланих або прийнятих байт. При виникненні якої-небудь помилки повертається негативне значення.
|
||||
Последнее изменение этой страницы: 2017-01-20; просмотров: 184; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.99.221 (0.009 с.) |