Программирование на 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 — атрибуты сокета.

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




      Начало  Назад  Вперед



      Книжный магазин