2012-07-31 22 views
0

我寫在C#是抓住另一個程序的連接函數調用,並讀取它連接到IP的應用程序。 (我知道它是IPv4)C#的sockaddr到有sockaddr_in

目前它掛鉤,攔截並轉發函數調用,我得到的變量,但由於winsock中的連接調用sockaddr *變量作爲第二個參數,我需要將此轉換爲sockaddr_in獲取IP地址。 (除非有檢索IP出sa_data場,我找不到任何有關信息的方式。)

這是我在哪裏卡住了。我使用InteropSignatureToolkit爲生成的結構生成了C#代碼(生成的代碼:http://pastebin.com/twvGw030),但我真的不知道如何將sockaddr結構體轉換爲sockaddr_in。在C++中,這很容易,但我不知道如何在C#中完成。

感謝你的時間閱讀這一點,我希望你能幫助我。 :)

+0

在另一個網站上的代碼可以從stackoverflow理想地改變,使這篇文章不太有用。 – 2012-07-31 02:22:18

回答

3

在p使用的IntPtr /調用聲明,那麼你可以使用Marshal.PtrToStructure。首先使用sockaddr找出sa_family,然後再以更具體的類型呼叫Marshal.PtrToStructure

+0

工作。謝謝 :) – Wouter 2012-07-31 13:49:11