如何在C#中发送ICMPv6回应请求消息?此外,我需要使用IPv6 ( IPv6数据包中没有DF标志)和数据包丢失率来指定实际带宽、RTT、路径上的MTU。
发布于 2012-01-13 23:53:07
您尝试过System.Net.NetworkInformation.Ping类吗?PingReply ()方法返回一个包含状态和往返时间的Send对象。不确定是否可以从中提取其他信息(从来不需要)。
在幕后,Ping使用Icmp6SendEcho2等Windows IP Helper Functions (http://msdn.microsoft.com/en-us/library/windows/desktop/aa366071%28v=VS.85%29.aspx)。通过直接使用这些函数,您可能能够获得比Ping包装器类公开的更多信息,例如:
[DllImport("iphlpapi.dll", SetLastError = true)]
internal static uint Icmp6SendEcho2(SafeCloseIcmpHandle icmpHandle, SafeWaitHandle Event, IntPtr apcRoutine, IntPtr apcContext, byte[] sourceSocketAddress, byte[] destSocketAddress, [In] SafeLocalFree data, ushort dataSize, ref IPOptions options, SafeLocalFree replyBuffer, uint replySize, uint timeout);(其中'replyBuffer‘是一个ICMPV6_ECHO_REPLY结构- http://msdn.microsoft.com/en-us/library/windows/desktop/bb485842%28v=VS.85%29.aspx)
不确定是否有办法获得MTU或真实的总带宽,但希望这至少是一个开始!
https://stackoverflow.com/questions/8852936
复制相似问题