русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Windows Sockets


Дата добавления: 2015-01-16; просмотров: 2185; Нарушение авторских прав


 

Winsock или Windows Sockets – это интерфейс программирования приложений (API) созданный для реализации программ в сети на основе протоколов TCP/IP.

При взаимодействии «клиент – сервер» в сети каждого участника взаимодействия можно рассматривать как конечную точку или другими словами сокет. Windows Sockets разрабатывался на основе интерфейса Беркли для UNIX (или BSD сокетов), но к ним добавлены функции поддержки событий Windows. Таким образом, несмотря на то, что рассмотрены только Windows Sockets, в целом программирование сокетов в UNIX системах и Windows похоже.

В настоящее время существует две основные версии Winsock API:

1. WinSock 1.1 – осуществляется поддержка только протоколов TCP/IP;

2. WinSock 2.0 – введена возможность работы с самыми разными сетевыми протоколами и моделями, например SPX/IPX.

Официальная спецификация Winsock разделяет функции на три типа:

1. функции Беркли;

2. информационные функции (получение информации о наименовании доменов, службах, протоколах Интернета);

3. расширения Windows для функций Беркли.

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

Код программы, осуществляющей инициализацию интерфейса Winsock API (WSA) и его деинициализацию следующий:

 



#include <stdio.h>

#include <winsock.h>

 



const int WINSOCK_VERSION = 0x0101;

 



void main()

{

WSADATA wsaData;

 



if (WSAStartup(WINSOCK_VERSION, &wsaData))

printf(“Winsock startup FAILED!\n”);

else

printf(“Winsock startup is successful.\n”);

 



if (WSACleanup())

printf(“Winsock cleanup FAILED!\n”);

else

printf(“Winsock cleanup is successful.\n”);

 



system(«pause»);

 



return;

}

 



Программа скомпилирована как консольный проект Win32. Для успешной линковки необходимо добавить в список зависимостей приложения файл wsock32.lib, входящий в состав любого современного компилятора C++ для Windows.

С помощью #include <winsock.h> подключаются библиотечные функции. Далее объявляется константа с номером версии, с которой будет работать приложение – WINSOCK_VERSION.

Функция WSAStartup() инициализирует Winsock. Эта функция всегда вызывается самой первой при начале работы с Winsock. Ее прототип следующий:

int WSAStartup (WORD wVersionRequested, LPWSADATA lpWSAData);

Первый параметр – это версия, которая будет использоваться. Младший байт – основная версия, старший байт – расширение версии. То есть в примере, используется версия 1.1. Если инициализация состоялась, то вернется нулевое значение. Инициализация заключается в сопоставлении номера версии и реально существующей библиотеки динамической компоновки (файла с расширением DLL) в системной папке Windows.

Второй параметр – это указатель на структуру 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, FAR * LPWSADATA;

WSACleanup() завершает использование данного DLL файла и прерывает обращение к функциям Winsock. При удачном выполнении вернется ноль. Результат успешной работы программы приведен на рисунке 2.4.1.

Рисунок 2.4.1 – Инициализация и деинициализация Winsock API

 



В состав Winsock входит ряд информационных функций, например, для получения сведений об имени компьютера в сети или IP – адреса. Рассмотрим простой пример, выводящий на экран имя локальной машины.

 



#include <stdio.h>

#include <winsock.h>

 



const int WINSOCK_VERSION = 0x0101;

 



void main()

{

char szInfo[BUFSIZ];

WSADATA wsaData;

 



if (WSAStartup(WINSOCK_VERSION, &wsaData))

printf(“Winsock startup FAILED!\n”);

else

printf(“Winsock startup is successful.\n”);

 





<== предыдущая лекция | следующая лекция ==>
Сетевые модели, протоколы и архитектура «клиент – сервер» | If (gethostname(szInfo,sizeof(szInfo)))


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.