Esempio n. 1
0
            public static void ProcessNetworkData(JNetworkData data)
            {
                JPacketType packetType = JNetworkHelper.GetNetworkPacketType(data);

                if (!JNetworkHelper.IsValidPacketType(packetType))
                {
                    return;
                }

                IProcessor processor = JLogicHelper.getProcessor(packetType);

                if (null == processor)
                {
                    return;
                }

                processor.run(JLogicUserData.getData(data.RemoteEndPoint));
            }
Esempio n. 2
0
        private void SendLoop()
        {
            JLog.Info("JServerSocketManager server send loop started", JGame.Log.JLogCategory.Network);

            while (true)
            {
                if (_forceEnd)
                {
                    break;
                }
                List <JNetworkData> dataList = JNetworkDataOperator.TakeSendData(1000);
                if (null == dataList)
                {
                    continue;
                }

                foreach (JNetworkData data in dataList)
                {
                    lock (_socketLocker) {
                        foreach (Socket socket in JConnectedClientSocket.sockets)
                        {
                            if (null == socket || null == socket.RemoteEndPoint)
                            {
                                continue;
                            }

                            if (JNetworkHelper.IsSameEndpoint(data.RemoteEndPoint as IPEndPoint, socket.RemoteEndPoint as IPEndPoint))
                            {
                                try
                                {
                                    socket.Send(data.Data);
                                    JLog.Info("send one data to " + (socket.RemoteEndPoint as IPEndPoint).Address.ToString(), JGame.Log.JLogCategory.Network);
                                }
                                catch (Exception e) {
                                    JLog.Error("SendLoop error message:" + e.Message, JGame.Log.JLogCategory.Network);
                                }
                            }
                        }
                    }
                }
            }

            JLog.Info("JServerSocketManager server send loop end", JGame.Log.JLogCategory.Network);
        }