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




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

ЛИТЕРАТУРА


  1. Бек Л. Введение в системное программирование. – М.: Мир, 1988.

  2. Рихтер Д. Windows для профессионалов. – М., 1995.

  3. Саймон Р. Windows 2000 API. Энциклопедия программиста.: - К., ДиаСофт, 2001.

  4. Харт Д. Системное программирование в среде Win32. – М.: Издат. Дом «Вильямс», 2001.

  5. Вильямс А. Системное программирование в Windows 2000. – СПб.: Питер, 2001.

  6. Кинг А. Windows 95 изнутри. – М., 1995.

  7. Григорьев В.Л. Программирование однокристальных микропроцессоров. – М. , 1987.

  8. Донован Дж. Системное программирование. – М.: Мир, 1975.

  9. Джордейн Р. Справочник программиста персонального компьютера типа IBM PC. – M., 1992.

  10. Робачевский А. Операционная система UNIX. – СПб., 1997.

  11. Финогенов К.Г. Самоучитель по системным функциям MS-DOS.

  12. Лэй Р. Разработка драйверов устройств для MS-DOS. – Рязань: Versus Ltd., 1992.

  13. Данкан Р. Профессиональная работа в MS-DOS. – М.: Мир, 1993.

  14. Юров В., Хорошенко С. Assembler: учебный курс. – СПб: Питер Ком, 1999.

  15. Теренс Чан Системное программирование на С++ для Unix. – К.:BHV, 1999.

  16. Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов. – М.: Мир, 1979.

  17. Павельев П.И. Переключатель квазипараллельных процессов для Си-программ в среде MS-DOS. – Мир ПК №2, 1995, с. 129 – 132.

  18. Джефф Просис Как Windows 95 хранит длинные имена файлов PC Magazine, June 25, 1996, p. 217

  19. Чепмен Девис. Разработка Internet-приложений в DELPHI 2. Перевод с англ. - К.:"Диасофт", 1998г.

  20. RFC 959 File Transfer Protocol

  21. RFC 821 Simple Mail Transfer Protocol

  22. RFC 822 Format for Electronic Mail Messages

  23. RFC 1651 SMTP Service Extention


Приложение 1

TCP/IP Программирование с использованием WinSock

На сегодняшний день ни одна операционная система не обходится без поддержки протокола TCP/IP, Windows не является исключением.

Наиболее широко для программирования TCP/IP использовался прикладной программный интерфейс - Berkeley библиотека сокетов. Berkeley сокеты использовались повсюду в Internet для реализации приложений TCP/IP. Было естественно, что, когда пришло время, Microsoft выбрала этот API для TCP/IP под Windows.

Использование Berkeley сокетов не ограничено программированием TCP/IP. Berkeley сокеты представляют межзадачный механизм связи, который может использовать TCP/IP или другими сетевыми протоколами для фактической передачи данных. Однако текущая WinSock реализация ограничивает использование интерфейса Berkeley сокетов только TCP/IP.
^

WinSock API


Интерфейс Berkeley сокетов может использоваться для связи с использованием обоих, и ориентированного на соединение протокола (TCP) и протокола без установления соединения (UDP). Модель программирования - клиент-серверная модель; серверы ожидают входящие запросы, в то время как клиенты инициализируют сеансы.

Имеются некоторые различия реализации между WinSock и UNIX версией Berkeley сокетов. Из них, возможно наиболее значительным является тот факт, что описатели сокетов и файловые описатели не могут быть при использовании взаимозаменяемы. Это приводит к известному эффекту при перенесении приложений, которые предполагают эту эквивалентность.

Другое различие в том, что WinSock библиотека требует инициализации. Приложения, которые намереваются использовать функции WinSock, должны сначала вызвать функцию WSAStartup(); когда работа с WinSock библиотекой закончена, они должны вызвать функцию WSACleanup() для надежного завершения.

WinSock API также включает несколько специфических функций WinSock для использования асинхронного ввода - вывода на сокетах. Это помогает в разработке чувствительных GUI приложений WinSock .

^

Инициализация WinSock


Динамическая библиотека wsock32.dll реализует механизм сокетов 1.1. Для использования соответствующих функций необходимо подключать заголовочный файл winsock.h

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

int WSAStartup(WORD wVersionRequired, WSADATA * WSAData);

В время вызова WSAStartup() приложение и WinSock библиотека согласовывают номер версии. Приложение указывает требуемый номер версии в качестве первого параметра. Например, 0x0101 (1.1). Запрос инициализации терпит неудачу, если не имеется никакого перекрытия между номером версии, поддерживаемым приложением и номером версии, поддерживаемым WinSock библиотекой.

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

При успешной инициализации в структуре типа WSADATA будут содержаться следующие полезные сведения:

typedef struct WSAData {

WORD wVersion;

WORD wHighVersion;

char szDescription[WSADESCRIPTION_LEN+1];

char szSystemStatus[WSASYS_STATUS_LEN+1];

unsigned short iMaxSockets;

unsigned short iMaxUdpDg;

char FAR * lpVendorInfo;

} WSADATA;

wVersion – номер версии, которая должна использоваться,

wHighVersion – максимальный номер версии, поддерживаемый данной библиотекой,

szDescription – описание реализации WinSock,

szSystemStatus – операционная система,

iMaxSockets –максимальное число сокетов, доступных процессу,

iMaxUdpDg – максимально допустимый размер дейтаграмм,
Создание и использование сокетов

Сокет – это абстрактный объект для обозначения одного из концов сетевого соединения. Он предназначен для создания механизма обмена данными.

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

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

Например, вызов функции

socket (AF_INET, SOCK_STREAM, IPPROTO_TCP) создает сокет потока, использующий протокол ТСР.

socket (AF_INET, SOCK_^ DGRAM, IPPROTO_UDP) создает сокет дейтаграмм, использующий протокол UDP.

Использование в качестве первого параметра AF_INET означает, что с этим сокетом будут использоваться адреса Internet.

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

Если функция socket() выполняется успешно, она возвращает дескриптор нового сокета. Если же ее работа завершается аварийно, возвращает значение 0 (INVALID_SOCKET). Для получения более подробной информации об ошибке следует вызвать функцию WSAGetLastError().
Закрытие сокета

Для завершения работы сокета необходимо закрыть его с помощью функции

int closesocket (SOCKET s);

В функцию передается дескриптор сокета.

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

int shutdown (SOCKET s, int how);

Эта функция сообщает гнезду о необходимости прекратить отправку или прием данных в зависимости от указанного метода прекращения работы (how);. Разрешенные методы перечислены в таблице.
Методы прекращения работы гнезда

Значение

Метод

0

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

1

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

2

Не разрешены ни прием, ни отправление данных. Такой метод прекращения работы используется для некоторых реализаций WinSock.



Функция bind()

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

Порт 0 Не используется. Если передать 0 в качестве номера порта, то будет автоматически выбран неиспользуемый порт с номером между 1024 и 5000.

Порты 1-255 Зарезервированы для сетевых служб: FTP, telnet, finger и т. д.

Порты 256-1023 Зарезервированы для других служб общего назначения, например функций маршрутизации.

Порты 1024-4999 Служат для портов клиентов. Обычно сокеты приложений-клиентов используют номера портов именно из этого диапазона.

Порты 5000-65535 Используются для определяемых пользователем портов приложений-серверов. Если клиенту необходимо знать номер порта заранее, то для него должен использоваться номер из этого диапазона.

Чтобы связать socket с фактическим адресом хоста и номером порта, приложения обычно вызывают функцию bind().

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

Первым параметром является дескриптор сокета (который возвращен функцией socket() ). Второй параметр является указателем на структуру, описывающую адрес. Третий параметр – размер этой структуры. Данная структура определена следующим образом:

struct sockaddr {

u_short sa_family; /* address family */

char sa_data[14]; /* up to 14 bytes of direct address */

};

Поле sa_family определяет тип адреса. Для internet адресов это значение установлено в AF_INET. sa_data содержит адрес.

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

struct sockaddr_in {

short sin_family;

u_short sin_port;

struct in_addr sin_addr;

char sin_zero[8];

};

Поле sin_port - 16-разрядный номер порта, который будет ассоциирован с данным сокетом. sin_addr - 32-разрядный IP адрес. sin_zero – заглушка, используется для того, чтобы размеры структур sockaddr_in и sockaddr совпадали.

Поле sin_addr определено как структура типа

struct in_addr {

union {

struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;

struct { u_short s_w1,s_w2; } S_un_w;

u_long S_addr;

} S_un;

Если установить S_addr = htonl(INADDR_ANY) , то будет использован IP-адрес по умолчанию для данного компьютера.

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
Главная страница


<