RAW сокеты в C ++ Windows

Я хочу использовать RAW Socket в Visual C ++.

Я видел функцию на Linux который

int out = socket(AF_INET, SOCK_RAW, htons(ETH_P_ALL));

Используя этот код в linux мы можем сделать это, но как использовать RAW SOCKET на платформе Windows, потому что когда я использую это в Visual C ++, я получаю сообщение об ошибке.

Заранее спасибо.

РЕДАКТИРОВАТЬ

int out1 = socket(AF_INET, SOCK_RAW, IPPROTO_SCTP);
for (; ;)
{
int bytesIn = recvfrom(out1, buf, 2000, 0, (sockaddr*)&server, &serverLength);
if (bytesIn == SOCKET_ERROR)
{
cout << "Error Receving from Server" << WSAGetLastError() << endl;
}
else
{
cout << "MESSAGE RECV from Server " << " : " << bytesIn << endl;
}
}

Это мой код для получения пакетов

1

Решение

В Windows ближайший эквивалент SOCK_RAW и вам придется использовать технику, чтобы сделать ваш код кросс-платформенным совместимым.

Например, используйте макросы и расширяйте базовый универсальный виртуальный класс в производный класс Windows и класс Linux, используя WSAPROTOCOL для Windows и библиотека POSIX для Linux.

Вот руководство о том, как использовать сырые розетки с Winsock.
Вот ответ на как идентифицировать платформу с помощью макросов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]