Создание сокета
После загрузки библиотеки необходимо создать сокет, с помощью которого происходит работа с сетью. Для этого в первой версии библиотеки есть функция 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 — атрибуты сокета.
Более подробно с указанными параметрами вы познакомитесь в процессе написания примеров. Это поможет вам лучше понять их и сразу же увидеть результат работы.