对于C ++,Winsock有没有可行的替代方案?我需要的原因是因为Winsock的原始套接字行为不正常(不,这是不可修复的,不要浪费你的时间)和WinPCAP只能监控网络流量,而不是实际接收数据包。我需要能够接收完整数据包的东西,包括任何IP,UDP,TCP标头等。这样的事情是否存在,如果没有,为什么不呢?
答案 0 :(得分:6)
WinPCAP只能监控网络流量,而不能实际接收数据包
监控网络流量相当于接收数据包。这正是Wireshark所做的工具:读取网卡并重建数据包边界。
我需要能够接收完整数据包的东西,包括任何IP,UDP,TCP标头等。
使用Winsock API非常有可能。查看WSAIoctl
函数,特别是SIO_RCVALL
选项 - 启用此选项会将接口上收到的所有数据包传递到套接字。这些是从IP头开始的原始IP数据包。
答案 1 :(得分:1)
您可以查看Boost.Asio。 C ++跨平台IO库。支持UDP,TCP和ICMP。