Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы»




НазваниеМетодические указания к курсовой работе по дисциплине «Системное программирование и операционные системы»
страница8/11
Дата публикации05.03.2013
Размер1.32 Mb.
ТипМетодические указания
uchebilka.ru > Математика > Методические указания
1   2   3   4   5   6   7   8   9   10   11
^

Поиск адреса хост-компьютера


Чтобы заполнить поле sin_addr sockaddr_in, мы должны сначала получить 32-разрядный адрес хоста. Получить адрес, когда символическое имя хоста известно, можно используя функцию gethostbyname().

struct hostent FAR * gethostbyname(const char FAR * name);

При вызове gethostbyname(), приложение в качестве параметра передает символическое имя хоста и получает указатель на структуру hostent.

Структура hostent определяется следующим образом:

struct hostent {

char FAR * h_name; /* official name of host */

char FAR * FAR * h_aliases; /* alias list */

short h_addrtype; /* host address type */

short h_length; /* length of address */

char FAR * FAR * h_addr_list; /* list of addresses */

#define h_addr h_addr_list[0] /* address, for backward compat */

};

Эта структура необходима, потому что имя хоста может быть связано с несколькими адресами. В большинстве случаев, приложения только берут первый адрес в h_addr_list. Для того чтобы упростить этот процесс, символ h_addr определен как h_addr_list [0].

Если пользователь желает для передачи в функцию bind() использовать вместо этого числовой формат адреса , например “198.0.0.1”, он должен использовать функцию inet_addr() (например inet_addr(“198.0.0.1”)), чтобы преобразовать строку в 32-разрядное значение адреса.

Если Вы собираетесь исполнять приложение на компьютере. В котором установлено и более сетевых плат, то нужно указать конкретно один из сетевых адресов. Можно упростить указание адреса за счет использования адреса по умолчанию, сконфигурированного для компьютера, на котором исполняется приложение. Для этого используется константа INADDR_ANY в поле S_addr.
Функция gethostbyname() является блокирующей и заставляет ваше приложение остановиться и ждать до тех пор, пока функция не выполнит свою задачу. Для этой функции реализована асинхронная версия в виде расширения Windows (любая функция WinSock API, которая начинается с WSA, является расширением Windows к BSD socket API).

HANDLE WSAAsyncGetHostByName(HWND hWnd, u_int wMsg,

const char FAR * name, char FAR * buf, int buflen);

Функции WSAAsyncGetHostByName() передается пять параметров. Первым параметром является дескриптор окна, которое служит для приема сообщения о событии, информирующем вас о том, что извлечен адрес host-компьютера. Второй параметр - это сообщение о событии, которое посылается в окно, указанное в первом параметре. Третий параметр представляет собой имя другого компьютера. Четвертым параметром является буфер, в который нужно поместить адрес, а последний параметр - это длина буфера, переданного в четвертом параметре. Буфер передается в виде указателя , но в действительности является указателем на структуру записи hostent.

^

Несоответствие внутреннего представления данных


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

Для упрощения этого преобразования имеется следующий набор функций: htonl, htons, ntohl, и ntohs. Эти функции служат для преобразования из внутреннего представления в сетевой формат длинных и коротких значений, а последние две функции наоборот.

^

Ожидание запросов на открытие соединения


После создания сокета и привязки его к адресу необходимо установить соединение с клиентом. Для этого используется функция

int listen (SOCKET s, int backlog);

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

1   2   3   4   5   6   7   8   9   10   11

Похожие:

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению курсовой работы «Гребные электрические...
Методические указания к выполнению курсовой работы «гребные электрические установки» по дисциплине «электрические системы и комплексы...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к курсовой работе по курсу "Разведка месторождений полезных ископаемых"
Методические указания к выполнению курсовой работы по дисциплине «Разведка месторождений полезных ископаемых» (для студентов очной...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к курсовой работе по дисциплине «Теория электрическихцепей»

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания и задания к лабораторным работам по курсу «Архитектура компьютеров (АК)»
Методические указания к лабораторным работам по курсу “Архитектура компьютеров предназначены для студентов специальностей «Системное...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» icon«Системное программирование и операционные системы»
Все цитаты, цифровой, фактический материал и библиографические сведенья проверены, запись единиц соответствует стандартам

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению курсовой работы по дисциплине «Вычислительный практикум»
Методические указания к выполнению курсовой работы по дисциплине «Вычислительный практикум» для студентов заочной формы обучения...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению курсовой работы по дисциплине «Основы маркетинга»
Бобрушева В. В. Методические указания к выполнению курсовой работы по дисциплине «Основы маркетинга» для студентов 2 курса дневной...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению лабораторных работ по дисциплине...
Компьютерная инженерия” (для студентов дневной и заочной формы обучения специальности 091501 “Компьютерные системы и сети”, 091502...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению курсовой работы по дисциплине...
Методические указания к выполнению курсовой работы по дисциплине «Техническая термодинамика»/ Составители

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению контрольной работы (ргр) по дисциплине...
Методические указания к выполнению контрольной работы (ргр) по дисциплине «Объектно-ориентированное программирование» (для студентов...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
uchebilka.ru
Главная страница


<