Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Создание простейшего сервера в ОС QNX

Тип Реферат
Предмет Информатика и программирование
Просмотров
863
Размер файла
56 б
Поделиться

Ознакомительный фрагмент работы:

Создание простейшего сервера в ОС QNX

Министерство образования Российской Федерации

Южно–Уральский Государственный Университет

Кафедра Автоматики и Управления

Создание простейшего сервера в ОС QNX

Отчет

по лабораторной работе №2

по курсу: «Автоматизированные системы управления

технологическими процессами»

Выполнил:Пономарев А.С..

Группа: ПС-437

Проверил: Харисов А.Ф.

Челябинск

2003 г.


Цель работы: Написать программу, создающую простейший Web-сервер.

Содержание работы

Опишем функции для работы с протоколом TCP/IP, которые мы использовали в данной программе:


1. Функция Socket

Для создания сокета используется системный вызов socket.

s = socket(domain, type, protocol);

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

communicationdomain – AF_INET (Internet протоколы).

typeofthesocket – SOCK_STREAM (этот тип обеспечивает последовательный, надежный, ориентированный на установление двусторонней связи поток байтов).

Функция socket создает конечную точку для коммуникаций и возвращает файловый дескриптор, ссылающийся на сокет, или -1 в случае ошибки. Данный дескриптор используется в дальнейшем для установления связи. Для создания сокета типа stream с протоколом TCP, обеспечивающим коммуникационную поддержку, вызов функции socket должен быть следующим:

s = socket(AF_INET, SOCK_STREAM, 0);


2 Функция Bind

Сокет создается без имени. Пока с сокетом не будет связано имя, удаленные процессы не имеют возможности ссылаться на него и, следовательно, на данном сокете не может быть получено никаких сообщений. Коммуникационные процессы используют для данных целей ассоциации. В Internet домене ассоциация складывается из локального и удаленного адреса и из локального и удаленного порта. В большинстве доменов ассоциация должна быть уникальной. В Internet домене связывание сокета и имени может быть весьма сложным, но, к счастью, обычно нет необходимости специально привязывать адрес и номер порта к сокету, так как функции connect и send автоматически свяжут данный сокет с подходящим адресом, если это не было сделано до их вызова. Для связывания сокета с адресом и номером порта используют системный вызов bind:

bind(s, name, namelen);

Привязываемое имя (name) это строка байт переменной длины, которая интерпретируется поддерживаемым протоколом.


3 Функции listen и accept

Когда сервер желает предложить один из своих сервисов, он связывает сокет с общеизвестным адресом, ассоциирующимся с данным сервисом, и пассивно слушает этот сокет. Для этих целей используется системный вызов listen:

error=listen(s, qlength);

где s это дескриптор сокета, а qlength это максимальное количество запросов на установление связи, которые могут стоять в очереди, ожидая обработки сервером; это количество может быть ограничено особенностями системы. Когда сервер получает запрос от клиента и принимает решение об установлении связи, он создает новый сокет и связывает его с ассоциацией, эквивалентной 'слушающему сокету'. Для Internet домена это означает тот же самый номер порта. Для этой цели используется системный вызов accept:

newsock = accept(s, clientaddr, clientaddrlen);

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


4 Чтение из сокета.

Прием данных из сети можно осуществлять посредством функций recv() и read(). Функции используются для приема данных из сокета, ориентированного на соединение. Функция read() - это обычная функция чтения, с помощью которой мы читаем из файлов и т.п. По сравнению с ней функция recv() ориентирована на работу исключительно с сокетами и обладает более богатыми возможностями. Рассмотрим подробнее функцию recv(). Она имеет следующий прототип

intrecv(intsockfd, void *buf, intlen, unsignedintflags);

и возвращает при успешном завершении число прочитанных байт, а при ошибке - -1. Первый параметр функции - сокет, из которого нужно прочитать данные, второй - указатель на область памяти, в которую нужно записать принятые данные, третий - сколько байт читать. С помощью четвертого параметра можно управлять поведением функции. Например, указав в качестве флага MSG_PEEK, мы прочитаем данные из начала очереди, но после чтения они останутся в очереди. Разные флаги можно комбинировать, объединяя соответствующие константы посредством операции побитного ИЛИ. Отметим, что по умолчанию только что созданный сокет является блокирующим. В отношении функции recv() это означает, что если в момент ее вызова данных нет, она блокируется до тех пор, пока они не придут из сети.


5 Запись в сокет

Посылку данных в сеть можно осуществлять посредством функций send() и write(). Эти две функции используются для записи данных в сокет, ориентированный на соединение. Функция write() - это обычная функция записи, с помощью которой мы пишем в файлы и т.п. По сравнению с ней функция send() ориентирована на работу исключительно с сокетами и обладает более богатыми возможностями. Рассмотрим подробнее функцию send(). Она имеет следующий прототип

intsend(intsockfd, void *buf, intlen, unsignedintflags);

и возвращает при успешном завершении число записанных байт, а при ошибке - -1. Первый параметр функции - сокет, в который нужно записать данные, второй - указатель на область памяти, из которой нужно взять данные, третий - сколько байт записать. С помощью четвертого параметра можно управлять поведением функции. Например, указав в качестве флага MSG_DONTROUTE, мы заставим TCP/IP посылать данные в обход обычных средств маршрутизации непосредственно на сетевой интерфейс получателя, что используется, например, различными диагностическими программами и маршрутизаторами. Разные флаги можно комбинировать, объединяя соответствующие константы посредством операции побитного ИЛИ.


6 Закрытие сокета

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

сlose(S)

где S – дескриптор закрываемого сокета.

Текст программы, создающей сервер.

#include <sys/socket.h>

#include <netinet/in.h>

#include <sys/types.h>

int main (void)

{ int S, K, New;

char bufer[250], buf[]="Server create.";

struct sockaddr_in serv =

{ sizeof (struct sockaddr_in),

AF_INET,

htons (3128),

INADDR_ANY

};

S=socket (AF_INET,SOCK_STREAM,0);

bind (S, (struct sockaddr*)&serv, sizeof(serv));

listen (S,10);

for (;;)

{

K=sizeof (serv);

New=accept (S, (struct sockaddr*)&serv,&K);

read (New,bufer,sizeof (bufer));

write (New,buf,sizeof(buf));

close (New);

}

close (S);

}

Опишем функции, которые мы использовали в данной программе:

Для создания сокета используется функция socket:

S=socket(protocol_family, socket_type, protocol);

где:

- protocol_family – группа или семейство, к которой принадлежит протокол, например TCP/IP. В нашем случае мы используем коммуникационный домен AF_INET, содержащий Internet протоколы.

- socket_type – тип сокета, задает режим соединения: датаграммный или ориентированный на поток байтов. В нашем случае тип сокета – SOCK_STREAM – обеспечивает последовательный, надежный, ориентированный на установление двусторонней связи поток байтов.

– protocol – определяет протокол, с которым будет работать сокет. В нашем случае для создания сокета с протоколом TCP данный параметр функции устанавливаем равным 0.

Функция bind закладывает способность программы ожидать появления запроса от клиента. Она позволяет связать сокет с адресом и номером порта.

Адрес сети интернет называется IP-адресом. Если компьютер подключен к сети интернет, то соответственно он имеет IP-адрес. Длина адреса Интернет составляет 4 байта или 32 бита. На одном компьютере может работать несколько приложений, поэтому второй составляющей адреса интернет является порт. В терминологии TCP/IP понятие «порт» очень похоже на IP-адрес. Различия: порт обозначает приложение, а IP-адрес – сетевой компьютер. В адресации Интернет порт занимает 2 байта или 16 бит (тип – integer).

bind(S, local_address, address_length);

где:

– Sэто дескриптор сокета, полученный от функции socket.

– local_address – локальный адрес сокета, являющийся указателем на структуру данных адреса сокета специального вида.

– address_length – указывает длину структуры данных адреса сокета.

Когда сервер желает предложить один из своих сервисов, он связывает сокет с общеизвестным адресом, ассоциирующимся с данным сервером, и пассивно слушает этот сокет. Для этих целей используется вызов функции listen:

listen(S, qlength);

где:

– S – дескриптор сокета.

– qlength – максимальное количество запросов на установление связи, которые могут стоять в очереди, ожидая обработки сервером. Выберем qlength=10.

Когда сервер получает запрос от клиента и принимает решение об установлении связи, он создает новый сокет и связывает его с ассоциацией (в internet домене ассоциация складывается из локального и удаленного адреса и из локального и удаленного порта), эквивалентной «слушающему сокету». Для этого используется вызов функции accept:

New=аccept(S, clientaddr, clientaddrlen);

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

Когда связь установлена, может начаться процесс передачи данных. Посылать и получать сообщения можно с помощью функций write и read соответственно:

write(S, buffer, sizeof(buffer));

read(S, buffer, sizeof(buffer));

где:

– S – дескриптор сокета;

– buffer – буфер сообщения, указывает на буфер, то есть область памяти, в которой расположены передаваемые данные.

– sizeof(buffer) – длина буфера, то есть количество данных для передачи.

Закрывается сокет с помощью функции close:

сlose(S)

где S – дескриптор закрываемого сокета.

После запуска, данная программа создает простейший Web-сервер, который постоянно запущен. Чтобы обратиться к этому серверу, необходимо в командной строке браузера написать IP адрес компьютера, на котором запущен сервер и порт (в нашем случае порт 3128). На рис. 1 представлен пример обращения к серверу.

Рис. 1

Вывод: В данной лабораторной работе мы научились работать с сокетами и создали простейший Web-сервер в операционной системе QNX.


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Филиал государственного бюджетного образовательного учреждения высшего образования Московской област
Спасибо Елизавете за оперативность. Так как это было важно для нас! Замечаний особых не бы...
star star star star star
РУТ
Огромное спасибо за уважительное отношение к заказчикам, быстроту и качество работы
star star star star star
ТГПУ
спасибо за помощь, работа сделана в срок и без замечаний, в полном объеме!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно