我想用一个RAW Socket
在 Visual C++ 中。
我看到了一个函数Linux
这是
int out = socket(AF_INET, SOCK_RAW, htons(ETH_P_ALL));
使用此代码linux
我们可以做到这一点,但是如何在 Windows 平台上使用 RAW SOCKET,因为当我在 Visual C++ 中使用它时,我收到错误。
提前致谢。
EDIT
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 https://msdn.microsoft.com/en-us/library/windows/desktop/ms740548(v=vs.85).aspx并且您将必须使用一种技术来使您的代码跨平台兼容。
例如,使用宏并将基本通用虚拟类扩展为 Windows 派生类和 Linux 派生类,使用WS协议 https://msdn.microsoft.com/en-us/library/windows/desktop/ms741675(v=vs.85).aspx适用于 Windows 和 POSIX 库适用于 Linux。
这是有关如何使用的指南使用 Winsock 的原始套接字 https://www.binarytides.com/raw-sockets-using-winsock/。
这是一个关于的答案如何用宏识别平台 https://stackoverflow.com/questions/4605842/how-to-identify-platform-compiler-from-preprocessor-macros.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)