对于使用C#来说我是一个新手,但是有使用Java和C ++的经验。我需要为学校制作一个Traceroute程序,但似乎无法正确ping通该程序。我使用MacOs和Mono 5.10.1.57。
首先,我尝试使用Ping类和PingOptions,如https://msdn.microsoft.com/en-us/library/system.net.networkinformation.pingoptions(v=vs.110).aspx上提供的示例。我将Ttl设置为1,程序忽略了我所做的ttl设置。我发现其他人也有同样的问题:https://github.com/dotnet/corefx/issues/9350。
之后,我决定尝试使用原始套接字类型来执行此操作,现在收到错误:System.Net.Sockets.SocketException:“未知错误:-1”。
这是我的代码:
Socket socket = new Socket(AddressFamily.InterNetwork,
SocketType.Raw, ProtocolType.Icmp);
socket.Ttl = 1;
socket.SendTo(packet_buffer, 54, 0, endPointServer);
谢谢!
编辑: 我的异常发生在实例化Socket的第1行。