protected override void Response() { var result = NatNegServer.Sessions.Values.Where( c => c.RemoteEndPoint == _connPacket.RemoteEndPoint); if (result.Count() < 1) { LogWriter.ToLog("Can not find client2 that client1 tries to connect!"); return; } NatNegSession user2 = result.First(); _sendingBuffer = _connPacket.GenerateResponse(NatPacketType.Connect); //_client.Server.SendAsync(client2.RemoteEndPoint, _sendingBuffer); }
public void Switch(NatNegSession session, byte[] recv) { try { session.UserInfo.LastPacketTime = DateTime.Now; //BytesRecieved[7] is nnpacket.PacketType. switch ((NatPacketType)recv[7]) { case NatPacketType.Init: new InitHandler(session, recv).Handle(); break; case NatPacketType.AddressCheck: new AddressHandler(session, recv).Handle(); break; case NatPacketType.NatifyRequest: new NatifyHandler(session, recv).Handle(); break; case NatPacketType.ConnectAck: session.UserInfo.IsGotConnectAck = true; break; case NatPacketType.Report: new ReportHandler(session, recv).Handle(); break; case NatPacketType.ErtAck: new ErtACKHandler(session, recv).Handle(); break; default: LogWriter.UnknownDataRecieved(recv); break; } } catch (Exception e) { LogWriter.ToLog(Serilog.Events.LogEventLevel.Error, e.ToString()); } }
public NatNegCommandHandlerBase(ISession session, byte[] recv) : base(session) { _recv = recv; _session = (NatNegSession)session.GetInstance(); }
public NatNegCommandHandlerBase(ISession session, byte[] recv) : base(session) { _recv = recv; _session = (NatNegSession)session.GetInstance(); _errorCode = NNErrorCode.NoError; }