Программирование на C++ глазами хакера

         

Создание сокета


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

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

В версии WinSock2 для создания сокета можно использовать функцию WSASocket.

SOCKET WSASocket ( int af, int type, int protocol, LPWSAPROTOCOL_INFO lpProtocolInfo, GROUP g, DWORD dwFlags );

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

af — семейство протоколов, которые можно использовать:

    AF_UNSPEC — спецификация не указана;

    AF_INET — интернет-протоколы TCP, UDP и т.д. В данной книге я буду использовать именно эти протоколы, как самые популярные и распространенные;

    AF_IPX — протоколы IPX, SPX;

    AF_APPLETALK — протокол AppleTalk;

    AF_NETBIOS — протокол NetBIOS;

    type — спецификация для нового сокета. Здесь можно указывать одно из следующих значений:

      SOCK_STREAM — передача с установкой соединения. Для интернет-протоколов будет использоваться TCP;

      SOCK_DGRAM — передача данных без установки соединения. Для интернет-протоколов будет использоваться UDP;

      protocol — протокол для использования. Протоколов очень много, и вы можете узнать о используемых константах в справочной системе по программированию, а я чаще всего буду использовать константу IPPROTO_TCP, которая соответствует протоколу TCP.

      В функции WSASocket добавлены еще три параметра:

      lpProtocolInfo — указатель на структуру WSAPROTOCOL_INFO, в которой определяются характеристики создаваемого сокета;

      g — идентификатор группы сокетов;

      dwFlags — атрибуты сокета.

      Более подробно с указанными параметрами вы познакомитесь в процессе написания примеров. Это поможет вам лучше понять их и сразу же увидеть результат работы.



      Содержание раздела