C++窗口中的 RAW 套接字



我想在Visual C++中使用RAW Socket

我在Linux上看到了一个函数,它是

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

linux中使用此代码我们可以做到这一点,但是如何在Windows平台上使用RAW套接字,因为当我在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;
}
}

这是我接收数据包的代码

在 Windows 中,最接近的等价项是 SOCK_RAW,您必须使用一种技术来使您的代码跨平台兼容。

例如,使用宏并将基本泛型虚拟类扩展到Windows派生类和Linux派生类,使用适用于Windows的WSAPROTOCOL和适用于Linux的POSIX库。

这是有关如何将原始套接字与Winsock一起使用的指南。 以下是有关如何使用宏识别平台的答案。

最新更新