Inheritance: BasicTunnelPacket
Esempio n. 1
0
 public void ProcessPing(StandardPingTunnelPacket ping, UdpClient udpClient)
 {
     StandardPongTunnelPacket pong = new StandardPongTunnelPacket() { data = ping.data };
     byte[] bytes = pong.getBytes();
     udpClient.Send(bytes, bytes.Length, ping.ip);
     //Logger.Debug("Sent a UDP pong [seq=" + ping.data[0] + "] to " + ping.ip);
 }
Esempio n. 2
0
 public int Ping(IPEndPoint ipEndPoint, int timeout, UdpClient udpClient)
 {
     StandardPingTunnelPacket ping = new StandardPingTunnelPacket() { data = new[] { _pingSeq++ } };
     long startTime = DateTime.Now.Ticks;
     _pingEvent.Reset();
     byte[] bytes = ping.getBytes();
     udpClient.Send(bytes, bytes.Length, ipEndPoint);
     if (!_pingEvent.WaitOne(timeout))
     {
         throw new TimeoutException("Timeout occured while attempting to ping [seq=" + ping.data[0] + "] " + ipEndPoint);
     }
     long stopTime = DateTime.Now.Ticks;
     int pingTimeMillis = (int)((stopTime - startTime) / 10000);
     Logger.Debug("Successfully UDP pinged [seq=" + ping.data[0] + "] tunnel " + Id + " in " + pingTimeMillis + "ms");
     return pingTimeMillis;
 }
Esempio n. 3
0
 public BasicTunnelPacket getPacket(byte[] bytes, IPEndPoint ip)
 {
     BasicTunnelPacket packet;
     switch (bytes[BasicTunnelPacket.PKT_POS_TYPE])
     {
         case BasicTunnelPacket.PKT_TYPE_PING:
             packet = new StandardPingTunnelPacket();
             break;
         case BasicTunnelPacket.PKT_TYPE_PONG:
             packet = new StandardPongTunnelPacket();
             break;
         case BasicTunnelPacket.PKT_TYPE_SYNC_RS:
             packet = new StandardSyncRsTunnelPacket();
             break;
         case BasicTunnelPacket.PKT_TYPE_SYNC_RQ:
             packet = new StandardSyncRqTunnelPacket();
             break;
         case BasicTunnelPacket.PKT_TYPE_WAVE_RS:
             packet = new StandardWaveTunnelRsPacket();
             break;
         case BasicTunnelPacket.PKT_TYPE_WAVE_RQ:
             packet = new StandardWaveTunnelRqPacket();
             break;
         case BasicTunnelPacket.PKT_TYPE_DATA:
             packet = new StandardTunnelDataPacket();
             break;
         case BasicTunnelPacket.PKT_TYPE_NOP:
             packet = new StandardTunnelNopPacket();
             break;
         case BasicTunnelPacket.PKT_TYPE_CLOSE:
             packet = new StandardCloseTunnelPacket();
             break;
         default:
             throw new UnknownPacketException("Failed to determine packet type [" + bytes[BasicTunnelPacket.PKT_POS_TYPE] + "]");
     }
     packet.processPacket(bytes, ip);
     return packet;
 }