#include <iostream>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsa;
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
{
std::cout << "WSAStartup() failed." << std::endl;
return 1;
}
SOCKET sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
if (sock == INVALID_SOCKET)
{
std::cout << "Failed to create raw socket." << std::endl;
int e = WSAGetLastError();
std::cout << "Error code: " << e << std::endl;
WSACleanup();
return 1;
}
closesocket(sock);
WSACleanup();
return 0;
}
Очень странная хрень. Если запускать без администратора, то функция socket(...)
не срабатывает и WSAGetLastError
выдаёт 10013. Это значит WSAEACCESS
. А с администратором работает.
Почему?