2011-02-14 35 views
0

我正在處理的應用程序需要跟蹤另一個應用程序的連接性,這意味着檢查另一個應用程序是否正在生成和接收IP通信。多套接字「重複」數據?

我們沒有其他應用程序的API,所以通過WinSock跟蹤IP流量。

int opt = RCVALL_ON; 
WSAIoctl((socket) s, SIO_RCV_ALL, &opt, sizeof(opt), NULL, ...); //The rest is "empty" 

我們再從套接字讀取數據不同步,並期待在IP報頭看交通屬於跟蹤應用程序 - 我們定義一個RAW IP套接字,並設置與東西相當於IO控制做到這一點。

出現了兩個問題 -

  1. 有另一種更好的方法來追蹤IP流量?具體而言,我們需要知道哪些主機將數據發送到機器以及將數據發送到哪些主機以及何時發送數據。
  2. 使用上述方法,是從目標應用程序截獲的「被盜」數據?或者,目標應用程序將其無縫插入其套接字中?

感謝,
阿薩夫

+0

您使用的互聯網協議(TCP,UDP)以上的任何協議「接收的數據報是複製到所有SOCK_RAW插座......」? – Kovags 2011-03-10 11:36:45

+0

@Nop - 沒有任何相關性。我們只關心是否有數據通過IP發送。我們甚至不關心它是TCP還是UDP,只是機器已經開始相互通話了。 – 2011-03-11 00:09:49

回答

2
  1. 這是通向軌道交通如果你不想要的驅動程序。如果你接受司機,WinPCap是要走的路。有了更多的限制,你可以看看建立的TCP連接(如netstat),但是根據你的要求,我一定會選擇你使用的原始套接字方式。

  2. 使用你的方法,數據被複制,而不是被盜。唯一明確的文檔我能找到這說明是MSDN