Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетУказКурсРабСистемПрогрЗИЭИТ2005.doc
Скачиваний:
6
Добавлен:
13.09.2019
Размер:
698.37 Кб
Скачать

Литература

  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 – максимально допустимый размер дейтаграмм,