示例#1
0
        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);
        }
示例#2
0
        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());
            }
        }
示例#3
0
 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;
 }