回答
您的問題並不具體也不是很詳細,所以您會收到一個廣泛的解釋。微軟.Net Framework 4.5實際上有一個類來處理這個叫做NetworkInterface
的類。
The Microsoft Developer Network actually explains in great detail these class requirements.
此特定類封裝數據網絡接口,也 稱爲適配器,在本地計算機上。您不會創建此類的實例 ; GetAllNetworkInterfaces方法返回一個數組,其中 包含本地計算機上每個網絡接口的此類的一個實例。
因此,您可以看到它需要半特定的細節,否則會失敗。因爲它可能會嘗試未連接的適配器。您的問題讓我相信,您試圖將ping
有效數據包發送到您的本地適配器以驗證是否有響應。
你甚至有NetworkInformation
命名空間,它提供了一系列相關的information。一個非常,非常簡單的實現會是這樣:
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
// Default Time To Live (TTL) but don't fragment request.
options.DontFragment = true;
// Create a buffer of 32 Bytes:
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
// Timeout
int timeout = 120;
// Ping and Request Reply
pingReply reply = pingSender.Send(args[0], timeout, buffer, options);
if(reply.Status == IPStatus.Success)
{
Console.WriteLine("Address: {0}, reply.Address.ToString());
Console.WriteLine ("RoundTrip time: {0}", reply.RoundtripTime);
Console.WriteLine ("Time to live: {0}", reply.Options.Ttl);
Console.WriteLine ("Don't fragment: {0}", reply.Options.DontFragment);
Console.WriteLine ("Buffer size: {0}", reply.Buffer.Length);
}
你可以簡單地使用Ping
請求127.0.0.1
因爲這是回送地址的網卡是目前正在使用。
答覆將指示它是否正在接收您的數據包。
是的,環迴應該會收到回覆,以知道您的卡正在使用中。但在大多數情況下,它可以被忽略;因爲只有當您收到請求時,地址纔會顯示有用的信息。
您的其他選項,如果你不喜歡Ping
想法。是簡單地設置您的NetworkInterface
聽一變:
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach(NetworkInterface n in adapters)
{
Console.WriteLine(" {0} is {1}", n.Name, n.OperationalStatus);
}
這是兩個有效的方法來測試從您卡的響應。正如我上面所說的,除非你專門發送請求到回送地址,否則回送不會主動「接收」任何東西。
希望有幫助。
我認爲問題是回送適配器根本不接收數據包。事件,如果我ping適配器我看不到該環回適配器的本地連接狀態告訴我,一個數據包收到。 – 2013-03-14 22:47:19
它改變了,一些網絡管理員改變它們。就其本質而言,在那裏行業'127.0.0.1'實際上是不好的做法,他們通常推薦我認爲'127.0.1.1'或'127.0.0。5'。儘管不能完全記住。這樣人們不會淹沒本地適配器。 – Greg 2013-03-14 22:56:13
您無法使用PCAP從Windows上的回送適配器捕獲數據包。但是,您可以使用名爲RawCAP的工具來執行此操作,並輸出.pcap文件(您可以在WireShark中打開:http://wiki.wireshark.org/CaptureSetup/Loopback)。
難道他不能從PCap發送'ICMP',然後在應用程序中使用'NetworkInformation'類對他的本地'127.0.0.1'進行ping來驗證它?甚至僅僅使用'NetworkInformation'來發送ping(ICMP)請求? – Greg 2013-03-14 22:34:33
如果他使用PCAP,他試圖在網絡上嗅探數據包。最有可能嘗試調試一些使用本地套接字的進程間通信。 – 2013-03-14 22:37:09
我不知道他是否意味着捕獲數據包?我剛剛意識到你說Capture,是的,如果他確實表示你確實是對的。 – Greg 2013-03-14 22:37:13
- 1. 端口在錯誤的網絡接口上收聽
- 2. 未使用android接收網絡數據?
- 3. 在WiFi網絡中無法使用jpcap接收數據包
- 4. 獲取接收到recvfrom()UDP數據包(Microsoft)的接口的IP
- 5. 在監視器接口上接收到的數據包,但不是主接口
- 6. 網絡接口參數
- 7. Python:從端口接收UDP數據包
- 8. 網絡數據包連接意圖
- 9. 網絡接口不包含「」的定義
- 10. 修改通過接口發送的所有網絡數據包
- 11. 計算特定網絡接口上的傳入數據包
- 12. 從python網絡接口讀取和處理數據包
- 13. 我的tcp偵聽器偵聽哪個網絡接口
- 14. 在收聽特定端口時收到廣播的數據包
- 15. 使用數據包套接字接收廣播數據包
- 16. 在我的數據包收聽器中未收到數據包
- 17. 接收到的網絡數據包中的內存對齊問題
- 18. 從android到網絡接收數據的android錯誤
- 19. 複製通過網絡接收的數據(數據包有效載荷)
- 20. 未收到Android設備的所有網絡接口
- 21. 無法使用udp協議從網絡接收數據
- 22. 無法在輔助接口上接收UDP/IPv6數據包
- 23. SFML TCP數據包接收
- 24. StreamCorruptedException接收到多個數據包
- 25. NodeJS幫助代理TCP端口數據到網絡套接字
- 26. udp監聽器從兩個不同的源端口接收數據包?
- 27. 綁定到Apache的網絡接口httpclient
- 28. lwip init網絡接口
- 29. 網絡接口速度
- 30. wifi網絡接口名稱
我試圖在Microsoft Loopback Adapter本身上發送數據包,但它沒有聽到它發送的數據包。問題是:它聽到什麼嗎? – 2013-03-14 22:12:06