C++窗口中的 RAW 套接字
RAW Sockets in C++ Windows
我想在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一起使用的指南。 以下是有关如何使用宏识别平台的答案。
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 套接字读取后,我在缓冲区中看到意外输入
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- (Winsock) UDP 接收工作正常,但同一套接字的发送失败
- MSG_WAITALL的套接字发送得到了 22 EINVAL
- C++套接字客户端到 Python 服务器未创建连接
- 在不知道套接字的情况下关闭网络连接
- C++套接字对不读/写父/子
- 非更新套接字消息
- SIGSEGV on Boost UDP 套接字关闭 - tcache_get at malloc.c.
- 将"uint8_t"(从套接字读取)隐式转换为"char"安全吗
- 使用RAW套接字读取ICMP响应
- C++窗口中的 RAW 套接字
- RAW ICMP 套接字:recvfrom() 未接收任何数据