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)); }
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); }