c++ Ошибка при создании сокета
#pragma comment( lib, "wsock32.lib" )
#include <winsock2.h>
int main()
{
int handle = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
cout << handle << endl;
if ( handle <= 0 )
{
printf( "failed to create socket\n" );
return false;
}
return 0;
}
Пытаюсь создать сокет по уроку через socket(), но она возвращает -1. В чем может быть проблема?
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Переношу в ответы комментарий Croessmath.
Чтобы можно было работать с сокетами - сначала нужно инициализировать соответствующую подсистему. Это делается с помощью вызова функции
WSAStartup, которой передать запрос необходимой для работы версии WinSock:
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0) {
/* Сообщение, что все плохо и Winsock DLL не найдена. */
printf("WSAStartup failed with error: %d\n", err);
return 1;
}
/* Проверка, что WinSock DLL поддерживает версию 2.2.*/
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {
/* Сообщение, что все плохо и Winsock DLL не найдена. */
printf("Could not find a usable version of Winsock.dll\n");
WSACleanup();
return 1;
}
else
printf("The Winsock 2.2 dll was found okay\n");