- •Введение
- •Тема 1. Двухпросмотровый ассемблер
- •Тема 2. Com-сервер для обработки и хранения результатов тестирования.
- •Тема 3. Дисковая утилита для просмотра fat.
- •Тема 4. Сервер автоматизации ole.
- •Тема 5. Дефрагментатор файловой системы.
- •Элемент каталога для короткого имени
- •Тема 6. Монитор системных ресурсов для Windows 98/2000.
- •Тема 7. Менеджер процессов и потоков для Windows 98/2000.
- •Тема 8. Файловый менеджер для Windows 98/2000/nt.
- •Тема 9. Формат исполняемого pe-файле в Windows 98/nt.
- •Тема 10. Запуск в определенное время различных программ.
- •Тема 11. Утилита, сохраняющая в файле информацию из системного реестра о программах, установленных на компьтере.
- •Тема 12. Утилита для очистки системного реестра Windows.
- •Тема 13. Утилита, отслеживающая изменения в файловой системе Windows в заданных каталогах.
- •Тема 14. Просмотрщик таблицы разделов и fat.
- •Тема 15. Утилита MaxSplitter
- •Тема 16. Утилита удаленного администрирования.
- •Тема 17. Простая почтовая программа на основе протокола smtp.
- •Тема 18. Ftp - клиент.
- •Тема 19. Ftp - сервер.
- •Тема 20. Системные сервисы Windows nt/2000.
- •Литература
- •Приложение 1. Tcp/ip Программирование с использованием WinSock
- •Создание и использование сокетов
- •Закрытие сокета
- •Функция shutdown()
- •Методы прекращения работы гнезда
- •Функция bind()
- •Приложение может послать запрос на соединение с помощью функции
- •Отправка и прием данных через сокеты потоков
- •Ожидание и обработка событий
- •Использование функции wsaAsyncSelect()
- •Приложение 2. Команды ftp
- •Приложение 3. Команды smtp
- •Приложение 4. Заголовки почты smtp
Литература
Бек Л. Введение в системное программирование. – М.: Мир, 1988.
Рихтер Д. Windows для профессионалов. – М., 1995.
Саймон Р. Windows 2000 API. Энциклопедия программиста.: - К., ДиаСофт, 2001.
Харт Д. Системное программирование в среде Win32. – М.: Издат. Дом «Вильямс», 2001.
Вильямс А. Системное программирование в Windows 2000. – СПб.: Питер, 2001.
Кинг А. Windows 95 изнутри. – М., 1995.
Григорьев В.Л. Программирование однокристальных микропроцессоров. – М. , 1987.
Донован Дж. Системное программирование. – М.: Мир, 1975.
Джордейн Р. Справочник программиста персонального компьютера типа IBM PC. – M., 1992.
Робачевский А. Операционная система UNIX. – СПб., 1997.
Финогенов К.Г. Самоучитель по системным функциям MS-DOS.
Лэй Р. Разработка драйверов устройств для MS-DOS. – Рязань: Versus Ltd., 1992.
Данкан Р. Профессиональная работа в MS-DOS. – М.: Мир, 1993.
Юров В., Хорошенко С. Assembler: учебный курс. – СПб: Питер Ком, 1999.
Теренс Чан Системное программирование на С++ для Unix. – К.:BHV, 1999.
Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов. – М.: Мир, 1979.
Павельев П.И. Переключатель квазипараллельных процессов для Си-программ в среде MS-DOS. – Мир ПК №2, 1995, с. 129 – 132.
Джефф Просис Как Windows 95 хранит длинные имена файлов PC Magazine, June 25, 1996, p. 217
Чепмен Девис. Разработка Internet-приложений в DELPHI 2. Перевод с англ. - К.:"Диасофт", 1998г.
RFC 959 File Transfer Protocol
RFC 821 Simple Mail Transfer Protocol
RFC 822 Format for Electronic Mail Messages
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 – максимально допустимый размер дейтаграмм,