多个套接字“重复”数据吗?

时间:2011-02-14 10:12:56

标签: ip winsock2

我正在处理的应用程序需要跟踪另一个应用程序的连接,这意味着检查另一个应用程序是否正在生成和接收IP流量。

我们没有其他应用程序的API,因此通过WinSock跟踪IP流量。我们通过定义RAW IP套接字并使用与 -

等效的东西设置IO控制来实现此目的
int opt = RCVALL_ON;
WSAIoctl((socket) s, SIO_RCV_ALL, &opt, sizeof(opt), NULL, ...); //The rest is "empty"

然后,我们异步读取套接字中的数据并查看IP标头,以查看流量​​属于跟踪的应用程序。

出现两个问题 -

  1. 还有另一种更好的方法来跟踪IP流量吗?具体而言,我们需要知道哪些主机将数据发送到机器以及发送了哪些主机数据,以及何时发送。
  2. 使用上述方法,是否从目标应用程序中“拦截”了数据?或者目标应用程序不间断地将其放入套接字中?
  3. 谢谢,
    阿萨夫

2 个答案:

答案 0 :(得分:2)

  1. 如果您不想要驱动程序,这是跟踪流量的方式。如果您接受司机,WinPCap是可行的方法。有了一些更多的约束,你可以看看已建立的tcp连接(比如netstat),但是根据你的要求,我肯定会选择你正在使用的原始套接字方法。

  2. 使用您的方法,数据被复制,而不是被盗。我可以找到的唯一明确的文档是MSDN:“收到的数据报被复制到所有SOCK_RAW套接字中......”

答案 1 :(得分:0)

我会认真看看http://en.wikipedia.org/wiki/Pcap

这是WireShark用来监控流量的,当我看一看他们的API看起来非常有用....