Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Типы адресов: физический (MAC-адрес), сетевой (IP-адрес) и символьный (DNS-имя)




Каждый компьютер в сети TCP/IP имеет адреса трех уровней:

Локальный адрес узла, определяемый технологией, с помощью которой построена отдельная сеть, в которую входит данный узел. Для узлов, входящих в локальные сети - это МАС-адрес сетевого адаптера или порта маршрутизатора, например, 11-А0-17-3D-BC-01. Эти адреса назначаются производителями оборудования и являются уникальными адресами, так как управляются централизовано. Для всех существующих технологий локальных сетей МАС-адрес имеет формат 6 байтов: старшие 3 байта - идентификатор фирмы производителя, а младшие 3 байта назначаются уникальным образом самим производителем. Для узлов, входящих в глобальные сети, такие как Х.25 или frame relay, локальный адрес назначается администратором глобальной сети.

IP-адрес, состоящий из 4 байт, например, 109.26.17.100. Этот адрес используется на сетевом уровне. Он назначается администратором во время конфигурирования компьютеров и маршрутизаторов. IP-адрес состоит из двух частей: номера сети и номера узла. Номер сети может быть выбран администратором произвольно, либо назначен по рекомендации специального подразделения Internet (Network Information Center, NIC), если сеть должна работать как составная часть Internet. Обычно провайдеры услуг Internet получают диапазоны адресов у подразделений NIC, а затем распределяют их между своими абонентами.

Номер узла в протоколе IP назначается независимо от локального адреса узла. Деление IP-адреса на поле номера сети и номера узла - гибкое, и граница между этими полями может устанавливаться весьма произвольно. Узел может входить в несколько IP-сетей. В этом случае узел должен иметь несколько IP-адресов, по числу сетевых связей. Таким образом IP-адрес характеризует не отдельный компьютер или маршрутизатор, а одно сетевое соединение.

Символьный идентификатор-имя, например, SERV1.IBM.COM. Этот адрес назначается администратором и состоит из нескольких частей, например, имени машины, имени организации, имени домена. Такой адрес, называемый также DNS-именем, используется на прикладном уровне, например, в протоколах FTP или telnet.

 

Адрес состоит из двух логических частей - номера сети и номера узла в сети. Какая часть адреса относится к номеру сети, а какая к номеру узла, определяется значениями первых битов адреса:

Если адрес начинается с 0, то сеть относят к классу А, и номер сети занимает один байт, остальные 3 байта интерпретируются как номер узла в сети. Сети класса А имеют номера в диапазоне от 1 до 126. (Номер 0 не используется, а номер 127 зарезервирован для специальных целей, о чем будет сказано ниже.) В сетях класса А количество узлов должно быть больше 216, но не превышать 224.

Если первые два бита адреса равны 10, то сеть относится к классу В и является сетью средних размеров с числом узлов 28 - 216. В сетях класса В под адрес сети и под адрес узла отводится по 16 битов, то есть по 2 байта.

Если адрес начинается с последовательности 110, то это сеть класса С с числом узлов не больше 28. Под адрес сети отводится 24 бита, а под адрес узла - 8 битов.

Если адрес начинается с последовательности 1110, то он является адресом класса D и обозначает особый, групповой адрес - multicast. Если в пакете в качестве адреса назначения указан адрес класса D, то такой пакет должны получить все узлы, которым присвоен данный адрес.

Если адрес начинается с последовательности 11110, то это адрес класса Е, он зарезервирован для будущих применений.

Класс Наименьший адрес Наибольший адрес
A 01.0.0 126.0.0.0
B 128.0.0.0 191.255.0.0
C 192.0.1.0 223.255.255.0
D 224.0.0.0 239.255.255.255
E 240.0.0.0 247.255.255.255

 



Служба DNS. Назначение и принцип работы.

 

Отображение символьных адресов на IP-адреса: служба DNS

DNS (Domain Name System) - это распределенная база данных, поддерживающая иерархическую систему имен для идентификации узлов в сети Internet. Служба DNS предназначена для автоматического поиска IP-адреса по известному символьному имени узла. Спецификация DNS определяется стандартами RFC 1034 и 1035. DNS требует статической конфигурации своих таблиц, отображающих имена компьютеров в IP-адрес.

Протокол DNS является служебным протоколом прикладного уровня. Этот протокол несимметричен - в нем определены DNS-серверы и DNS-клиенты. DNS-серверы хранят часть распределенной базы данных о соответствии символьных имен и IP-адресов. Эта база данных распределена по административным доменам сети Internet. Клиенты сервера DNS знают IP-адрес сервера DNS своего административного домена и по протоколу IP передают запрос, в котором сообщают известное символьное имя и просят вернуть соответствующий ему IP-адрес.

Если данные о запрошенном соответствии хранятся в базе данного DNS-сервера, то он сразу посылает ответ клиенту, если же нет - то он посылает запрос DNS-серверу другого домена, который может сам обработать запрос, либо передать его другому DNS-серверу. Все DNS-серверы соединены иерархически, в соответствии с иерархией доменов сети Internet. Клиент опрашивает эти серверы имен, пока не найдет нужные отображения. Этот процесс ускоряется из-за того, что серверы имен постоянно кэшируют информацию, предоставляемую по запросам. Клиентские компьютеры могут использовать в своей работе IP-адреса нескольких DNS-серверов, для повышения надежности своей работы.

База данных DNS имеет структуру дерева, называемого доменным пространством имен, в котором каждый домен (узел дерева) имеет имя и может содержать поддомены. Имя домена идентифицирует его положение в этой базе данных по отношению к родительскому домену, причем точки в имени отделяют части, соответствующие узлам домена.

Корень базы данных DNS управляется центром Internet Network Information Center. Домены верхнего уровня назначаются для каждой страны, а также на организационной основе. Имена этих доменов должны следовать международному стандарту ISO 3166. Для обозначения стран используются трехбуквенные и двухбуквенные аббревиатуры, а для различных типов организаций используются следующие аббревиатуры:

com - коммерческие организации (например, microsoft.com);

edu - образовательные (например, mit.edu);

gov - правительственные организации (например, nsf.gov);

org - некоммерческие организации (например, fidonet.org);

net - организации, поддерживающие сети (например, nsf.net).

Каждый домен DNS администрируется отдельной организацией, которая обычно разбивает свой домен на поддомены и передает функции администрирования этих поддоменов другим организациям. Каждый домен имеет уникальное имя, а каждый из поддоменов имеет уникальное имя внутри своего домена. Имя домена может содержать до 63 символов. Каждый хост в сети Internet однозначно определяется своим полным доменным именем (fully qualified domain name, FQDN), которое включает имена всех доменов по направлению от хоста к корню. Пример полного DNS-имени :

citint.dol.ru.



ARP

Отображение физических адресов на IP-адреса: протоколы ARP и RARP

Для определения локального адреса по IP-адресу используется протокол разрешения адреса Address Resolution Protocol, ARP. Протокол ARP работает различным образом в зависимости от того, какой протокол канального уровня работает в данной сети - протокол локальной сети (Ethernet, Token Ring, FDDI) с возможностью широковещательного доступа одновременно ко всем узлам сети, или же протокол глобальной сети (X.25, frame relay), как правило не поддерживающий широковещательный доступ. Существует также протокол, решающий обратную задачу - нахождение IP-адреса по известному локальному адресу. Он называется реверсивный ARP - RARP (Reverse Address Resolution Protocol) и используется при старте бездисковых станций, не знающих в начальный момент своего IP-адреса, но знающих адрес своего сетевого адаптера.

В локальных сетях протокол ARP использует широковещательные кадры протокола канального уровня для поиска в сети узла с заданным IP-адресом.

Узел, которому нужно выполнить отображение IP-адреса на локальный адрес, формирует ARP запрос, вкладывает его в кадр протокола канального уровня, указывая в нем известный IP-адрес, и рассылает запрос широковещательно. Все узлы локальной сети получают ARP запрос и сравнивают указанный там IP-адрес с собственным. В случае их совпадения узел формирует ARP-ответ, в котором указывает свой IP-адрес и свой локальный адрес и отправляет его уже направленно, так как в ARP запросе отправитель указывает свой локальный адрес. ARP-запросы и ответы используют один и тот же формат пакета. Так как локальные адреса могут в различных типах сетей иметь различную длину, то формат пакета протокола ARP зависит от типа сети. На рисунке 3.2 показан формат пакета протокола ARP для передачи по сети Ethernet.

 

Принцип работы

 

Узел, которому нужно выполнить отображение IP-адреса на локальный адрес, формирует ARP запрос, вкладывает его в кадр протокола канального уровня, указывая в нем известный IP-адрес, и рассылает запрос широковещательно.

Все узлы локальной сети получают ARP запрос и сравнивают указанный там IP-адрес с собственным.

В случае их совпадения узел формирует ARP-ответ, в котором указывает свой IP-адрес и свой локальный адрес и отправляет его уже направленно, так как в ARP запросе отправитель указывает свой локальный адрес.


 28 Понятие протокола. Правила построения протокола

Протокол передачи данных — набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом.

 

Сетевые протоколы предписывают правила работы компьютерам, которые подключены к сети. Они строятся по многоуровневому принципу. Протокол некоторого уровня определяет одно из технических правил связи. В настоящее время для сетевых протоколов используется модель OSI (Open System Interconnection — взаимодействие открытых систем, ВОС).

 

Модель OSI — это 7-уровневая логическая модель работы сети. Модель OSI реализуется группой протоколов и правил связи, организованных в несколько уровней:

на физическом уровне определяются физические (механические, электрические, оптические) характеристики линий связи;

на канальном уровне определяются правила использования физического уровня узлами сети;

сетевой уровень отвечает за адресацию и доставку сообщений;

транспортный уровень контролирует очередность прохождения компонентов сообщения;

задача сеансового уровня — координация связи между двумя прикладными программами, работающими на разных рабочих станциях;

уровень представления служит для преобразования данных из внутреннего формата компьютера в формат передачи;

прикладной уровень является пограничным между прикладной программой и другими уровнями — обеспечивает удобный интерфейс связи сетевых программ пользователя.


1. 29 Язык SQL. Назначение и его структура.

SQL (ˈɛsˈkjuˈɛl; англ. Structured Query Language — «язык структурированных запросов») — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.

 

Язык SQL представляет собой совокупность

операторов;

инструкций;

и вычисляемых функций.

 

Операторы

Согласно общепринятому стилю программирования, операторы (и другие зарезервированные слова) в SQL всегда следует писать прописными буквами [4].

 

Операторы SQL делятся на:

операторы определения данных (Data Definition Language, DDL)

CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.)

ALTER изменяет объект

DROP удаляет объект

операторы манипуляции данными (Data Manipulation Language, DML)

SELECT считывает данные, удовлетворяющие заданным условиям

INSERT добавляет новые данные

UPDATE изменяет существующие данные

DELETE удаляет данные

операторы определения доступа к данным (Data Control Language, DCL)

GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом

REVOKE отзывает ранее выданные разрешения

DENY задает запрет, имеющий приоритет над разрешением

операторы управления транзакциями (Transaction Control Language, TCL)

COMMIT применяет транзакцию.

ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции.

SAVEPOINT делит транзакцию на более мелкие участки.

 

 


30 Язык PHP. Работа с базой данных.

PHP (англ. ‘PHP: Hypertext Preprocessor’ — «PHP: Препроцессор Гипертекста») — рефлексивный язык программирования, разработанный в качестве инструмента для создания динамических веб-страниц и работы с базами данных.

 

Сейчас PHP в основном используется в качестве языка для создания веб-приложений, но может использоваться и для создания обычных GUI-приложений (используется связка PHP GUI-библиотекой GTK) или CLI-приложений. В области программирования для Сети PHP — один из популярнейших скриптовых языков благодаря своей простоте, скорости выполнения, богатой функциональности. PHP отличается наличием ядра и подключаемых модулей, «расширений», которые увеличивают его функциональность.

 

1 mysql_connect

<?php

$conn = mysql_connect ("localhost", "username", "pass")

   or die ("Соединение не установлено!");

print ("Соединение установлено!");

mysql_close($conn);

?>

 

2 mysql_pconnect

3 mysql_close

6 mysql_db_name

7 mysql_select_db  int mysql_select_db (string database_name [, int link_identifier])

8 mysql_create_db mysql_create_db("my_db_name")

9 mysql_drop_db

12 mysql_query

14 mysql_num_rows

18 mysql_free_result


31 Язык PHP. Циклы

В PHP существует несколько видов циклов, перечислю их:

 

Цикл for – Цикл со счётчиком.

<?php

for($i=1;$i<=5;$i++)//Определяем цикл

 {

echo(‘Этот цикл выполнился ’.$i.’ раз.’);//Выводим на экран сообщение.

}

?>

 

Цикл while – Цикл с предусловием.

<?php

//Определяем переменные, которые будут использованы в цикле.

 $do = true;

 $i = 0;

while($do)//Открываем цикл с предусловием

 {

$i++;//При каждом обходе цикла прибавляем к переменной единицу.

 echo($i);//Выводим значение переменной на экран.

 if ($i == 10)//Когда переменная будет равна десяти

 {

$do = false;//Завершаем выполнение цикла, присвоением ложного значения переменной $do

}

}

?>

 

Цикл do while – Цикл с постусловием.

<?php

//Определяем переменные

 $i=0;

 $do = true;

do

 {

$i++;

echo($i);//Выводим значение переменной на экран.

 if ($i == 10)//Когда переменная будет равна десяти

 {

$do = false;//Завершаем выполнение цикла, присвоением ложного значения переменной $do

}

}

 while($do);//Условие цикла с постусловием

?>

 

Цикл foreach – Специальный цикл для обхода массивов.

<?php

//Определяем массив

$array[0] = 1;

 $array[1] = 2;

 $array[2] = 3;

 $array[3] = 4;

 $array[4] = 5;

foreach($array as $key => $value)

 {

//Выводим каждый элемент массива и его индекс

echo(‘Ключ элемента массива – ’.$key);//Выводим ключи элементов массива.

 echo(‘Значение элемента массива – ’.$value);//Выводим значение элемента массива.?>


1. 32 Язык PHP. Условные операторы.

В PHP существует несколько условных операторов, которые очень часто используются PHP-программистами при написании программ. В данной статье речь пойдёт об условном операторе if. Он служит для того чтобы задать условия выполнения участка кода, который задается в фигурных скобках после оператора «if».

 

Синтаксис условного оператора if:

if ( условие ) { код который будет выполнен, если условие верно }

<?php

$rnd = (int) mt_rand(1,10);//Находим случайное целое число от 1 до 10.

if ($rnd > 5)//Если число больше 5

 {

 //Выполняем этот участок кода.

 echo(‘Случайное число больше 5!’);//Выводим текст

}

if ($rnd <= 5)//Если число меньше или равно 5

 {

 //Выполняем этот участок кода.

 echo(‘Случайное число меньше либо равно 5!’);

}

?>

 

Синтаксис конструкции if else:

if ( условие ) { код который будет выполнен, если условие верно } else { код который будет выполнен, если условие не верно }

Чтобы было более понятно, приведу пример того же скрипта, только с использованием оператора else:

<?php

$rnd = (int) mt_rand(1,10);//Находим случайное целое число от 1 до 10.

if ($rnd > 5)//Если число больше 5

 {

 //Выполняем этот участок кода.

 echo(‘Случайное число больше 5!’);//Выводим текст

} else { //Иначе

//Выполняем этот участок кода.

 echo(‘Случайное число меньше либо равно 5!’);//Выводим текст

}

?>

 

Синтаксис конструкции if else if:

if ( условие ) { код который будет выполнен, если условие верно } else if ( условие2 ) { код который будет выполнен, если условие не верно }

Приведу пример с тем же случайным числом, только теперь более ужесточим условия проверки:

<?php

$rnd = (int) mt_rand(1,10);//Находим случайное целое число от 1 до 10.

if ($rnd > 6)//Проверяем больше ли случайное число шести.

 {

//Выполняется этот участок кода.

 echo(‘Случайное число больше 6!’);//Выводим текст

}

 else if ($rnd > 3) // Если первое условие не выполнилось, проверяем больше ли число 3.

 {

//Выполняется этот участок кода.

 echo(‘Случайное число больше 3, но меньше либо равно 6!’);//Выводим текст

 } else {

//Выполняется этот участок кода.

 echo(‘Случайное число меньше либо равно 3!’);//Выводим текст}?>


33 Язык PHP. Функции работы со строками.

В языке PHP существует такой тип данных, как строковой (String). Он служит для того чтобы мы могли работать со строками в PHP. Конечно, Вы уже имеете представление, что переменная должна иметь определенный тип. В этой статье я хочу как можно понятнее описать все принципы работы с текстовым типом данных.

 

Для работы со строковыми (текстовыми) переменными в PHP предусмотрен очень богатый набор функций, которые, несомненно, облегчат Вам написание Ваших программ. Для более наглядного представления, что же это всё-таки такое «строка в PHP», я приведу простенький пример использования строковой переменной:

<?php

$a = ‘Обычная строковая переменная с текстом’; //Присвоим переменной $a текстовое значение.

echo($a); //Выводим значение переменной на экран.

?>

 

Вот такой простенький скрипт, сначала присваивает значение переменной $a текстовое значение, а затем выводит это значение на экран.

 

Синтаксис функции echo():

echo(значение);

 или

echo(значение 1, значение 2);

 

Синтаксис функции strlen():

strlen(Строковая переменная);

 

Очень полезной функцией, при помощи которой мы можем отыскать позицию любого символа в строке, является функция strpos(). С помощью неё можно отыскать позицию как одного символа, так и целого отрезка символов.

 

Синтаксис функции strpos():

 

strpos(строковая переменная, нужный символ или группа символов);

 или

strpos(строковая переменная, нужный символ или группа символов, позиция откуда начинать поиск);

 

Пример:

 

 

<?php

 

$alphavit = ‘АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ’; //Задаем текстовое значение переменной

 $a = strpos($alphavit, ‘Д’);//Находим позицию буквы Д в строке

 

echo($a);//Выводим результат

 

?>

 


 35 Создание форм на языке HTML

Форма (Form) - это особая часть "тела" документа HTML. Она позволяет вводить текст и осуществлять выбор из списка или при помощи кнопок. Сочетая эти два способа ввода информации, можно создавать формы, наиболее подходящие для конкретной задачи

 

<FORM METHOD="POST" ACTION="/bin/who">

 <INPUT TYPE=”HIDDEN” NAME=''WhoForm" VALUE=”ShortForm”>

 Фамилия: <INPUT TYPE=”TEXT" SIZE=40 NAME="Last">

 <INPUT TYPE=SUBMIT VALUE="Далее">

 <INPUT TYPE=RESET VALUE ="Очистить">

 </FORM>

<INPUT TYPE="TEXT"

 

 SIZE="20" NAME="NAME" MAXLENGTH="10" VALUE="Фамилия">

 

 <1NPUT TYPE="PASSWORD" SIZE="20" NAME="PASS" MAXLENGTH="5">

<TEXTAREA NAME="Resume" ROWS=10 COLS=60 WRAP=VIRTUAL>

 

напечатайте свое резюме </TEXTAREA>

<UL>

 

<INPUT TYPE="RADIO" NAME="CARD" VALUE="HTML" CHECKED> HTML <BR>

 

<INPUT TYPE="RADIO" NAME="CARD" VALUE="CSS"> CSS <BR>

 

<INPUT TYPE="RADIO" NAME="CARD" VALUE="FTP"> FTP <BR>

 

</UL


 

 









Технология клиент-сервер.

 

Клиент-сервер (англ. Client-server) — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемыми серверами, и заказчиками услуг, называемыми клиентами. Нередко клиенты и серверы взаимодействуют через компьютерную сеть и могут быть как различными физическими устройствами, так и программным обеспечением.

 

Преимущества

 

Делает возможным, в большинстве случаев, распределение функций вычислительной системы между несколькими независимыми компьютерами в сети. Это позволяет упростить обслуживание вычислительной системы. В частности, замена, ремонт, модернизация или перемещение сервера не затрагивают клиентов.

Все данные хранятся на сервере, который, как правило, защищён гораздо лучше большинства клиентов. На сервере проще обеспечить контроль полномочий, чтобы разрешать доступ к данным только клиентам с соответствующими правами доступа.

Позволяет объединить различные клиенты. Использовать ресурсы одного сервера часто могут клиенты с разными аппаратными платформами, операционными системами и т. п.

 

Недостатки

 

Неработоспособность сервера может сделать неработоспособной всю вычислительную сеть.

Поддержка работы данной системы требует отдельного специалиста — системного администратора.

Высокая стоимость оборудования.



Сокет

Сокеты («розетки») – это абстракция, предназначенная для представления конечных точек сетевого соединения. Концепция сокетов была разработана в университете Беркли, поэтому сетевые сокеты нередко называют сокетами Беркли. Разработчики данной технологии преследовали цель создания универсальной технологии программирования сетевого взаимодействия. Поначалу реализованная в ОС семейства UNIX, технология сокетов быстро завоевала популярность и стала стандартом де-факто для подавляющего большинства операционных систем. Зачастую реализация сокетов в конкретной ОС расширяет набор функций исходной модели сокетов Беркли, но не замещает его. Далее приводится описание основных функций сокетов и порядка их вызовов.

Процесс программирования сокетов начинается с создания сокета, при помощи функции socket:

SOCKET socket( int af,    int type,   int protocol );

где af – семейство адреса (для сети Интернет используется значение AF_INET);
type – тип сокета, в ОС Windows данный параметр может принимать значение SOCK_STREAM (для ориентированных на соединение протоколов, например TCP) и SOCK_DGRAM (соответственно для неориентированных на соединение протоколов, например UDP); protocol – используемый протокол (для сети Интернет используется значения IPPROTO_TCP для протокола TCP и IPPROTO_UDP для UDP соответственно).

В случае успеха функция вернет дескриптор сокета, в противном случае – значение INVALID_SOCKET.

Далее следует «привязка» сокета к конкретному адресу и порту при помощи функции bind:

int bind( SOCKET s,                       const struct sockaddr FAR *name,   int namelen                   );

где s – только что созданный сокет; name – указатель на структуру SOCKADDR, namelen-размер структуры SOCKADDR, которая в случае TCP/IP имеет вид:

struct sockaddr_in {   short sin_family;//семейство (для сети Internet используется                      //значение PF_INET)   u_short sin_port;//номер порта   struct in_addr sin_addr;//адрес   char sin_zero[8];//нули}.

При привязке указываются номер порта и адрес локальной системы. В подавляющем большинстве случаев для сервера указывается конкретный номер порта, а клиент обычно использует значение «0», которое указывает системе самостоятельно выбрать свободный порт из диапазона 1024-5000. В качестве адреса обычно используется значение INADDR_ANY, позволяющее осуществить привязку к имеющимся сетевым интерфейсам без необходимости указания конкретного адреса.

Прежде чем начать обмен данными с сервером, необходимо установить логическое соединение, за это отвечает функция connect:

int connect( SOCKET s,                       const struct sockaddr FAR *name,   int namelen                   );

Параметры идентичны функции bind, однако в данном случае указываются порт и адрес удаленной системы. Функция является синхронной, т.е. она не вернет управления до тех пор, пока не будет установлено соединение, либо не истечет таймаут.


Прием и передача данных по протоколу TCP выполняется при помощи функций recv и send соответственно.

int recv( SOCKET s,    char FAR *buf,   int len,     int flags  );

где buf – указатель на буфер, предназначенный для сохранения принятых данных; len – размер буфера; flags – флаги, в большинстве случаев никаких флагов устанавливать не требуется, т.е. значения этого поля равно нулю.

int send( SOCKET s,           const char FAR *buf,   int len,            int flags         );

где buf – указатель на буфер, содержащий данные, предназначенные для передачи; len – размер передаваемых данных; flags – флаги, в большинстве случаев никаких флагов устанавливать не требуется, т.е. значения этого поля равно нулю.

Обе функции возвращают количество принятых/переданных байт.

После завершения обмена следует вызвать функцию shutdown:

int shutdown( SOCKET s,   int how );

где how – параметр, указывающий, какой тип операций более не разрешен для сокета. Для завершения и приема и передачи используется значение SD_BOTH.

Для закрытия сокета используется функция close, единственным параметром которой является дескриптор сокета

int close(SOCKET s).

В ОС Windows поддерживается исходная модель сокетов Беркли, однако также в этой ОС реализован интерфейс сетевого программирования названный Windows Sockets или Winsock, который является расширением интерфейса сокетов Беркли. Конкретно среди особенностей стоит упомянуть об интеграции пространства имен сокетов в пространство имен объектов ОС, а также полную поддержку асинхронных (не блокирующих) операций приема/передачи, а также подтверждения соединения.

При использовании сокетов Беркли в ОС Windows существует ряд нюансов, о которых необходимо помнить:

- вместо функции close для закрытия сокетов используется функция closesocket, имеющая тот же синтаксис;

- перед вызовом какой-либо функции из Socket API необходимо вызвать функцию WSAStartup, а после завершения работы с сокетами – функцию WSACleanup.

 

Необходимые функции расположены в библиотеках sys/socket.h и netinet/in.h для Linux; в библиотеке winsock.h – для Windows.










Последнее изменение этой страницы: 2018-05-27; просмотров: 389.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...