【发布时间】:2012-12-12 23:44:39
【问题描述】:
我正在编写一个简单的程序,通过网络侦听传入的 tcp/udp 数据包并从中检索数据。我还需要解析数据包头以获取序列号等。我正在运行 windows7 和 VC++ 2010。
显然我需要一个数据包生成器,并且我想使用环回地址,以便发送方和接收方在同一台机器上。
由于我是 C++ 网络编程的初学者,我需要一些帮助来弄清楚如何进行。
我应该建立自己的 tcp/udp 生成器吗?如果是,我必须使用 RAW 套接字还是更高级别的 api 就足够了(获取 ip 标头的可能性)。如果不是,应该使用哪个生成器?
我应该为接收器使用什么技术?我在看 boost::asio 和 winsock2.h。但是由于我没有太多时间来发现它们,有人可以告诉我该怎么做。
非常感谢您的帮助。
最好的问候。
【问题讨论】:
-
不清楚您是否正在编写通信套接字端点(例如客户端或服务器),或者您是否正在尝试拦截您直接控制之外的其他两个实体之间发生的通信。如果您对自己在做什么不太了解,请使用 Winsock 接口,因为它与几乎无处不在的 BSD 套接字接口基本相同。
-
@GregHewgill 感谢您的回复。实际上它是套接字端点。考虑使用winsock,我可以解析ip头吗?我应该使用它在 Google 上搜索“如何创建 RAW 套接字”吗? MSDN 说
Limitations on Raw Sockets : TCP data cannot be sent over raw sockets.是什么意思?