回答
您的问题并不具体也不是很详细,所以您会收到一个广泛的解释。微软.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