Exemplo n.º 1
0
 public void Init()
 {
     MockPacketValidator = new Mock<IPacketValidator>();
     MockPacketProcessor = new Mock<IPacketProcessor>();
     MockLogger = new Mock<IQdafLogger>();
     Receiver = new PacketReceiver(MockPacketValidator.Object, MockPacketProcessor.Object, MockLogger.Object);
 }
Exemplo n.º 2
0
        public void Start(Stream stream)
        {
            this.stream = stream;

            packetReceiver = new PacketReceiver(stream);
            packetReceiver.MessageReceived += PacketReceiver_MessageReceived;

            tokenSource = new CancellationTokenSource();

            task = Task.Run(async() => {
                while (!tokenSource.IsCancellationRequested)
                {
                    try {
                        await packetReceiver.ReadPacket();
                    }
                    catch (IOException error) when(error.HResult == -2146232800 && (error.InnerException?.HResult ?? 0) == -2147467259)
                    {
                        // Client Disconnected
                        return;
                    }
                    catch (ObjectDisposedException) {
                        // Stream Closed
                        return;
                    }
                    catch (EndOfStreamException) {
                        // Stream Closed
                        return;
                    }
                    catch (Exception error) {
                        OnThreadException(error);
                    }
                }
            });
        }
Exemplo n.º 3
0
    public void Disconnect()
    {
        if (m_receiver != null)
        {
            m_receiver.Destroy();
        }
        if (m_sender != null)
        {
            m_sender.Destroy();
        }

        m_sender    = null;
        m_receiver  = null;
        m_onConnect = null;
        m_delayCall = null;

        m_waitPing = 0;

        var s = state;

        state = SessionState.CLOSED;

        if (m_socket != null)
        {
            Logger.LogInfo("<b><color=#FFFFFF>[{0}]</color></b> {1}", m_typeName, s == SessionState.CONNECTING ? "Connecting aborted!" : s == SessionState.CONNECTED ? "Disconnect from server!" : "Socket closed.");

            var tmp = m_socket;
            m_socket = null;
            tmp.Close();
        }
    }
Exemplo n.º 4
0
        public void ProcessReceive()
        {
            Packet packet = null;

            while (true)
            {
                packet = DequeuePacket();
                if (packet == null)
                {
                    // 더이상 처리할 패킷이 없으면 스레드 대기.
                    _loopEvent.WaitOne();
                    continue;
                }


                if (InterceptProtocol != null)
                {
                    if (InterceptProtocol(packet.Peer, packet.ProtocolId, packet.Msg, packet.Length) == true)
                    {
                        continue;
                    }
                }


                PacketReceiver.Process(packet.Peer, packet.ProtocolId, packet.Msg);
            }
        }
Exemplo n.º 5
0
 public Terrain(IMultiplayerSession multiplayerSession, IPacketSender packetSender, VisibleCells visibleCells, PacketReceiver packetReceiver)
 {
     this.multiplayerSession = multiplayerSession;
     this.packetSender       = packetSender;
     this.visibleCells       = visibleCells;
     this.packetReceiver     = packetReceiver;
 }
Exemplo n.º 6
0
        private void ReceiveCallback(IAsyncResult res)
        {
            Socket current = (Socket)res.AsyncState;
            int    received;

            received = current.EndReceive(res, out SocketError err);

            // = forceful close
            if (err != SocketError.Success)
            {
                DisconnectHandler.OnDisconnect(current);
                return;
            }

            byte[] recBuf = new byte[received];
            Array.Copy(buffer, recBuf, received);

            // = graceful close
            if (recBuf.Length == 0)
            {
                DisconnectHandler.OnDisconnect(current);
                return;
            }

            PacketReceiver.HandlePacket(recBuf, current);

            current.BeginReceive(buffer, 0, BUFFER_SIZE, SocketFlags.None, ReceiveCallback, current);
        }
Exemplo n.º 7
0
    private void OnValidateHost(string validHost, AddressFamily family, Action <Session> callback)
    {
        if (family == AddressFamily.Unknown)
        {
            state = SessionState.CLOSED;

            moduleGlobal.ShowMessageNextFrame(1);
            Logger.LogError("<b><color=#FFFFFF>[{0}]</color></b> Connect to server [{1}:{2}] failed! Resolve address failed.", m_typeName, host, port);

            m_delayCall = callback;

            return;
        }

        m_socket = new Socket(family, SocketType.Stream, ProtocolType.Tcp);
        m_socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, 1);

        try { OnCreateSocket(m_socket); }
        catch (Exception e) { Logger.LogException(e); }

        m_socket.BeginConnect(validHost, port, a =>
        {
            var socket = a.AsyncState as Socket;
            if (socket != m_socket) // if we recreate a new socket, return
            {
                if (socket != null && socket.Connected)
                {
                    socket.Disconnect(false);
                }
                return;
            }

            try { socket.EndConnect(a); }
            catch (Exception e) { Logger.LogException("<b><color=#FFFFFF>[{0}]</color></b> Exception occured while connecting to server [{1}:{2}]! Exception: {3}", m_typeName, host, port, e); }

            if (socket.Connected)
            {
                state = SessionState.CONNECTED;

                Logger.LogInfo("<b><color=#FFFFFF>[{0}]</color></b> Connected to server [{1}:{2}]!", m_typeName, host, port);

                m_sender   = new PacketSender(socket);
                m_receiver = new PacketReceiver(socket);

                SendPing();

                OnConnected();
                DispatchEvent(Events.SESSION_CONNECTED);
            }
            else
            {
                Logger.LogError("<b><color=#FFFFFF>[{0}]</color></b> Connect to server [{1}:{2}] failed!", m_typeName, host, port);
                state = SessionState.CLOSED;
                Disconnect();
            }

            m_delayCall = callback;
        }, m_socket);
    }
        public void TestInitialize()
        {
            packetReceiver = new PacketReceiver();

            loadedCell   = new AbsoluteEntityCell(loadedActionPosition, CELL_LEVEL);
            unloadedCell = new AbsoluteEntityCell(unloadedActionPosition, CELL_LEVEL);

            visibleCells.Add(loadedCell);
        }
Exemplo n.º 9
0
    public void ForcePacketProcess(CoopPacket packet)
    {
        PacketReceiver packetReceiver = GetPacketReceiver(packet);

        if (packetReceiver != null)
        {
            packetReceiver.ForcePacketProcess(packet);
        }
    }
Exemplo n.º 10
0
        static void Main(string[] args)
        {
            packetReceiver = new PacketReceiver();
            packetReceiver.Initialize();

            BotManager botManager = new BotManager("selim59150", "Mirabelle29");

            Console.ReadKey();
        }
Exemplo n.º 11
0
 public void Awake()
 {
     Log.InGame("Multiplayer Client Loaded...");
     multiplayerSession          = NitroxServiceLocator.LocateService <IMultiplayerSession>();
     packetReceiver              = NitroxServiceLocator.LocateService <PacketReceiver>();
     Log.InGameLogger            = new SubnauticaInGameLogger();
     NitroxModel.Helper.Map.Main = new SubnauticaMap();
     Main = this;
     DontDestroyOnLoad(gameObject);
 }
Exemplo n.º 12
0
        public void TestInitialize()
        {
            packetReceiver = new PacketReceiver();
            NitroxModel.Helper.Map.Main = new NitroxModel_Subnautica.Helper.SubnauticaMap();

            loadedCell   = new AbsoluteEntityCell(loadedActionPosition, CELL_LEVEL);
            unloadedCell = new AbsoluteEntityCell(unloadedActionPosition, CELL_LEVEL);

            visibleCells.Add(loadedCell);
        }
Exemplo n.º 13
0
        public void Awake()
        {
            Log.InGame(Language.main.Get("Nitrox_MultiplayerLoaded"));

            multiplayerSession = NitroxServiceLocator.LocateService <IMultiplayerSession>();
            packetReceiver     = NitroxServiceLocator.LocateService <PacketReceiver>();

            Main = this;
            DontDestroyOnLoad(gameObject);
        }
Exemplo n.º 14
0
        public void Start(NetworkStream stream)
        {
            this.stream = stream;

            packetReceiver = new PacketReceiver(stream);
            packetReceiver.MessageReceived += PacketReceiver_MessageReceived;

            tokenSource = new CancellationTokenSource();

            var _ = OnProcess(tokenSource.Token);
        }
Exemplo n.º 15
0
    public bool PacketRelay(CoopPacket packet)
    {
        PacketReceiver packetReceiver = GetPacketReceiver(packet);

        if (packetReceiver != null)
        {
            packetReceiver.Set(packet);
            return(true);
        }
        return(false);
    }
Exemplo n.º 16
0
 void registerHandler(Client c, short op, PacketReceiver packetHandler)
 {
     try
     {
         Ops.Add(op, packetHandler);
     }
     catch (Exception e)
     {
         MessageBox.Show(e.ToString());
         c.updateLog("[Packets] Failed to register handler for packet with OP Code " + op.ToString());
     }
 }
Exemplo n.º 17
0
        public void TestInitialize()
        {
            NitroxServiceLocator.InitializeDependencyContainer(new ClientAutoFacRegistrar(), new TestAutoFacRegistrar());
            NitroxServiceLocator.BeginNewLifetimeScope();

            packetReceiver = NitroxServiceLocator.LocateService <PacketReceiver>();

            loadedCell   = new AbsoluteEntityCell(loadedActionPosition, CELL_LEVEL);
            unloadedCell = new AbsoluteEntityCell(unloadedActionPosition, CELL_LEVEL);

            visibleCells.Add(loadedCell);
        }
Exemplo n.º 18
0
        static void Main(string[] args)
        {
            Test();
            TeraEncryptionKeys keys   = new TeraEncryptionKeys(PacketReceiver.ClientKey1, PacketReceiver.ClientKey2, PacketReceiver.ServerKey1, PacketReceiver.ServerKey2);
            MessageTables      tables = new MessageTables(DicFromPath(@"D:\gMessages.txt"), DicFromPath(@"D:\sMessages.txt"));

            _client = new GameClient(keys, tables);
            PluginLoader pLoader = new PluginLoader("Plugins");

            pLoader.Start(_client);
            PacketReceiver.PacketReceived += PacketReceiver_PacketReceived;
            PacketReceiver.Start();
            Console.ReadKey(true);
        }
Exemplo n.º 19
0
        private static void CheckMethod(MethodInfo method)
        {
            PacketReceiver attr = (PacketReceiver)method.GetCustomAttribute(typeof(PacketReceiver));

            if (attr != null)
            {
                if (!methods.ContainsKey(attr.MessageType))
                {
                    methods.Add(attr.MessageType, method);
                }
                else
                {
                    Console.WriteLine("Error: Multiple receiver methods for packet \"" + attr.MessageType.ToString() + "\" (" + methods[attr.MessageType].Name + " and " + method.Name + ")");
                }
            }
        }
Exemplo n.º 20
0
	public override IEnumerator SetupAsync ()
	{
		netInterface = new NetworkInterface();
		packetSender = new PacketSender();
		packetReceiver = new PacketReceiver(netInterface);
		packetReceiver.AddPacketListener(OnReceivePacket);

		netInterface.ConnectTo(ip, port);

		while (netInterface.State == ConnectionState.Connecting)
		{
			yield return null;
		}

		Debug.Log("Connected!");

		// var data = System.Text.Encoding.ASCII.GetBytes("hello~");

		// netInterface.Send(data);
		netInterface.StartReceive();
	}
Exemplo n.º 21
0
        private void ProcessPackets(Dictionary <Type, PacketProcessor> packetProcessorMap)
        {
            Queue <Packet> packets = PacketReceiver.GetReceivedPackets();

            foreach (Packet packet in packets)
            {
                PacketProcessor packetProcessor;
                if (packetProcessorMap.TryGetValue(packet.GetType(), out packetProcessor))
                {
                    try
                    {
                        packetProcessor.ProcessPacket(packet, null);
                    }
                    catch (Exception ex)
                    {
                        Log.Error("Error processing packet: " + packet, ex);
                    }
                }
                else
                {
                    Log.Debug("No packet processor for the given type: " + packet.GetType());
                }
            }
        }
Exemplo n.º 22
0
        /// <summary>
        /// 큐에서 패킷을 하나 꺼내서 처리한다.
        /// </summary>
        public virtual void Update()
        {
            if (_isActivated == false)
            {
                return;
            }

            if (PacketReceiver == null)
            {
                return;
            }

            for (int i = 0; i < _packetProcessCount; i++)
            {
                Packet packet = DequeuePacket();
                if (packet == null)
                {
                    return;
                }


                if (InterceptProtocol != null)
                {
                    if (InterceptProtocol(packet.Peer, packet.ProtocolId, packet.Msg, packet.Length) == true)
                    {
                        continue;
                    }
                }


                if (PacketReceiver.Process(packet.Peer, packet.ProtocolId, packet.Msg) == false)
                {
                    throw new Exception(string.Format("failed to process receive packet. protocol {0}", packet.ProtocolId));
                }
            }
        }
Exemplo n.º 23
0
 public LidgrenClient()
 {
     packetReceiver = NitroxServiceLocator.LocateService <PacketReceiver>();
 }
Exemplo n.º 24
0
 public LiteNetLibClient(PacketReceiver packetReceiver, NetworkDebugger networkDebugger)
 {
     this.packetReceiver  = packetReceiver;
     this.networkDebugger = networkDebugger;
 }
Exemplo n.º 25
0
 public LiteNetLibClient()
 {
     packetReceiver = NitroxServiceLocator.LocateService <PacketReceiver>();
 }