public void OnReceivePacket(DatagramPacket datagramPacket) { byte[] dpData = datagramPacket.Data; int sType = PacketCheck.CheckSType(datagramPacket); int remoteClientId = BitConverter.ToInt32(dpData, 9); if (sType == PacketType.PingPacket) { PingPacket pingPacket = new PingPacket(datagramPacket); SendPingPacket2(pingPacket.PingId, datagramPacket.Host, datagramPacket.Port); CurrentSpeed = pingPacket.DownloadSpeed * 1024; } else if (sType == PacketType.PingPacket2) { PingPacket2 pingPacket2 = new PingPacket2(datagramPacket); LastReceivePingTime = DateTimeExtensions.CurrentTimeMillis(); long?t = PingTable[pingPacket2.PingId]; if (t != null) { PingDelay = (int)(DateTimeExtensions.CurrentTimeMillis() - t); string protocal = "udp"; Console.WriteLine("delay_" + protocal + " " + PingDelay + "ms " + datagramPacket.Host + ":" + datagramPacket.Port); } } }
public void SendPingPacket2(int pingId, string dstHost, int dstPort) { PingPacket2 pingPacket2 = new PingPacket2(0, MyRoute.LocalClientId, pingId); pingPacket2.DstHost = dstHost; pingPacket2.DstPort = dstPort; //try SendPacket(pingPacket2.MyDatagramPacket); }