public void run(IDataSet dataSet) { IStreamObj roleObj = dataSet.getData(JObjectType.create_role); if (null == roleObj) { JLog.Error("JProcessorCreateRole.run roleObj is null."); return; } JCreateRoleReqObject createRoleReqObj = roleObj as JCreateRoleReqObject; if (null == createRoleReqObj) { JLog.Error("JProcessorCreateRole.run createRoleReqObj is null."); return; } try { JNetworkDataOperator.SendDataToServer(JPacketType.pt_createRole_req, createRoleReqObj); JLogicUserData.setLocalData(createRoleReqObj); } catch (Exception e) { JLog.Debug("JProcessorCreateRole 发送数据失败"); JLog.Error("JProcessorCreateRole 发送数据失败 " + e.Message); return; } }
/// <summary> /// Takes the send data. /// </summary> /// <returns>The send data. wait failed will return null</returns> /// <param name="millisecondsTimeout">Milliseconds timeout. <0 wait always</param> public static List <JNetworkData> TakeSendData(int millisecondsTimeout) { if (millisecondsTimeout < 0) { if (!_sendSemaphore.WaitOne()) { return(null); } } else { if (!_sendSemaphore.WaitOne(millisecondsTimeout)) { return(null); } } List <JNetworkData> listData = new List <JNetworkData> (); try{ lock (_sendLocker) { while (JNetworkInteractiveData.SendData.Data.Count > 0) { listData.Add(JNetworkInteractiveData.SendData.Data.Dequeue()); } } } catch (Exception e) { JLog.Error("TakeSendData:" + e.Message, JGame.Log.JLogCategory.Network); } JLog.Debug("JNetworkDataOperator.TakeSendData : take all send data count:" + listData.Count.ToString(), JGame.Log.JLogCategory.Network); return(listData); }
public void Initialize(string serverIP, int serverPort) { if (_initialized) { JLog.Error("JClientSocketManager initialized aready !", JGame.Log.JLogCategory.Network); return; } JNetworkServerInfo.ServerIP = serverIP; JNetworkServerInfo.ServerPort = serverPort; IPAddress serverAdress = IPAddress.Parse(serverIP); IPEndPoint serverEdp = new IPEndPoint(serverAdress, serverPort); JClientSocket.socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); JNetworkInteractiveData.ReceivedData = new JNetworkDataQueue(); JNetworkInteractiveData.SendData = new JNetworkDataQueue(); try { JClientSocket.socket.Connect(serverEdp); JLog.Info("Connect to server success.", JGame.Log.JLogCategory.Network); JClientDataSenderThread.Initialize(); JClientDataReceiverThread.Initialize(); } catch (Exception e) { JLog.Error(e.Message, JGame.Log.JLogCategory.Network); return; } }
private bool CheckRoleNameIsValud(JMySqlAccess mysql, string account, string roleName, ref int ErrorType) { string strSql = string.Format("select * from {0} where user_account = '{1}' and role_name = '{2}'", JDBUtil.TableName_Server_RoleInfo, account, roleName); try { DataSet dataset = mysql.Select(strSql); if (null == dataset || null == dataset.Tables) { ErrorType = (int)JCreateRoleRetObject.CreateRoleResultType.failed; return(false); } if (dataset.Tables.Count > 0 && dataset.Tables[0].Rows.Count > 0) { ErrorType = (int)JCreateRoleRetObject.CreateRoleResultType.RoleNameRepeated; return(false); } } catch (Exception e) { JLog.Error("CheckRoleNameIsValud." + e.Message); return(false); } return(true); }
private bool CreateRole(JMySqlAccess mysql, string account, string roleName, int roleType, ref string roleId, ref int ErrorType) { try { string resultMssage = ""; bool inserResult = mysql.DoSql( string.Format("INSERT into {0} ( role_name, user_account, role_type, scene_id) VALUES( '{1}' , '{2}' , {3} , {4} );", JDBUtil.TableName_Server_RoleInfo, roleName, account, roleType, JDBUtil.TableValue_SenceID_Default), ref resultMssage); JLog.Info("resultMssage"); if (inserResult) { ErrorType = (int)JCreateRoleRetObject.CreateRoleResultType.successed; JLog.Debug("Create role success, account: " + account + " roleName:" + roleName + " roleType:" + roleType); return(true); } else { ErrorType = (int)JCreateRoleRetObject.CreateRoleResultType.failed; JLog.Debug("Create role falied, account: " + account + " roleName:" + roleName + " roleType:" + roleType); return(false); } } catch (Exception e) { JLog.Error(e.Message); ErrorType = (int)JCreateRoleRetObject.CreateRoleResultType.failed; return(false); } }
public static bool registerProcessor(JPacketType packetType, IProcesser processor, bool isServerProcessor = false) { if (IsServer && !isServerProcessor || !IsServer && isServerProcessor) { return(true); } bool bSuccess = false; try { _readerWriteLocker.EnterWriteLock(); if (!JLogicRegisteredProcessors.processors.PacketTypeToProcessor.ContainsKey(packetType)) { JLogicRegisteredProcessors.processors.PacketTypeToProcessor.Add(packetType, processor); bSuccess = true; } } catch (Exception e) { JLog.Error("JLogicHelper.RegisterProcessor error message:" + e.Message); } finally { _readerWriteLocker.ExitWriteLock(); } return(bSuccess); }
public static IProcesser getProcessor(JPacketType packetType) { IProcesser processor = null; try { _readerWriteLocker.EnterReadLock(); if (JLogicRegisteredProcessors.processors.PacketTypeToProcessor.ContainsKey(packetType)) { processor = (IProcesser)JLogicRegisteredProcessors.processors.PacketTypeToProcessor[packetType]; } } catch (Exception e) { JLog.Error("JLogicHelper.RegisterProcessor error message:" + e.Message); } finally { _readerWriteLocker.ExitReadLock(); } if (null == processor) { JLog.Error("JLogicHelper.RegisterProcessor: Unregistered packet type:" + packetType.GetDescription()); } return(processor); }
public void run(IDataSet dataSet) { IStreamObj obj = dataSet.getData(JObjectType.create_role_ret); if (null == obj || null == (obj as JCreateRoleRetObject)) { JLog.Error("JProcesserCreateRoleRet : obj is empty!"); } if ((obj as JCreateRoleRetObject).Result != JCreateRoleRetObject.CreateRoleResultType.successed) { JLog.Info("Received JCreateRoleRetObject create failed:!" + (obj as JCreateRoleRetObject).Result.GetDescription()); } //todo:...remind to regist else if (null != createRole) { IStreamObj createRoleObjTemp = JLogicUserData.getLocalData().getData(JObjectType.create_role); if (null == createRoleObjTemp) { return; } JCreateRoleReqObject createRoleObj = createRoleObjTemp as JCreateRoleReqObject; if (null == createRoleObj) { return; } createRole(createRoleObj.RoleName, createRoleObj.RoleType); } }
public static void MainLoop() { if (null == JClientSocket.socket) { JLog.Error("JClientDataReceiverThread.MainLoop JClientSocket.socket is null, please make sure JClientSocketManager is initialized. ", JGame.Log.JLogCategory.Network); return; } while (true) { if (_requireEnd) { break; } if (JClientSocket.socket.Available <= 0) { Thread.Sleep(100); continue; } byte[] buffer = new byte[JTcpDefines.max_buffer_size]; int recLen = JClientSocket.socket.Receive(buffer); if (recLen > 0) { JNetworkDataOperator.ReceiveData(recLen, buffer, JClientSocket.socket.RemoteEndPoint); } else { //说明socket已经断开连接 } } }
public static List <JNetworkData> TakeReceivedData() { List <JNetworkData> listData = new List <JNetworkData> (); if (!_receivedSemaphore.WaitOne(1)) { return(listData); } try{ lock (_receiveLocker) { JLog.Debug("JNetworkDataOperator.TakeReceivedData : take all received data count:" + JNetworkInteractiveData.ReceivedData.Data.Count.ToString(), JGame.Log.JLogCategory.Network); while (JNetworkInteractiveData.ReceivedData.Data.Count > 0) { listData.Add(JNetworkInteractiveData.ReceivedData.Data.Dequeue()); } } } catch (Exception e) { JLog.Error("TakeSendData:" + e.Message, JGame.Log.JLogCategory.Network); } return(listData); }
/*private byte[] KeepAliveTime * { * get * { * uint dummy = 0; * byte[] inOptionValues = new byte[Marshal.SizeOf(dummy) * 3]; * BitConverter.GetBytes((uint)1).CopyTo(inOptionValues, 0); * BitConverter.GetBytes((uint)5000).CopyTo(inOptionValues, Marshal.SizeOf(dummy)); * BitConverter.GetBytes((uint)5000).CopyTo(inOptionValues, Marshal.SizeOf(dummy) * 2); * return inOptionValues; * } * } * private const int keepAlive = -1744830460; * private byte[] inValue = new byte[] { 1, 0, 0, 0, 0x20, 0x4e, 0, 0, 0xd0, 0x07, 0, 0 }; * byte[] inValue = new byte[] { 1, 0, 0, 0, 0x10, 0x27, 0, 0, 0xe8, 0x03, 0, 0 }; // True, 10秒, 1 秒 * JServerSocket.socket.IOControl(keepAlive, inValue, null); * JServerSocket.socket.IOControl(IOControlCode.KeepAliveValues, inValue, null);*/ public void Initialize(string serverIP, int serverPort) { if (_initialized) { JLog.Error("JServerSocketManager initialized aready !", JGame.Log.JLogCategory.Network); return; } JLog.Info("JServerSocketManager begin to initialize :", JGame.Log.JLogCategory.Network); _socketHeartDelayTime = new Dictionary <Socket, ulong> (); _heartbeatLocker = new object(); JNetworkServerInfo.ServerIP = serverIP; JNetworkServerInfo.ServerPort = serverPort; _socketLocker = new object(); _semaphore = new Semaphore(0, 10000); JNetworkInteractiveData.ReceivedData = new JNetworkDataQueue(); JNetworkInteractiveData.SendData = new JNetworkDataQueue(); IPAddress ip_server = IPAddress.Parse(serverIP); IPEndPoint server_edp = new IPEndPoint(ip_server, serverPort); JServerSocket.socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { JServerSocket.socket.Bind(server_edp); JLog.Info("JServerSocketManager server socket bind to server endpoint finished.\nIP:" + serverIP + "\nPort:" + serverPort.ToString(), JGame.Log.JLogCategory.Network); JServerSocket.socket.Listen(JTcpDefines.max_tcp_connect); JLog.Info("JServerSocketManager server socket begin listen", JGame.Log.JLogCategory.Network); _serverSendThread = new Thread(SendLoop) { IsBackground = true }; _serverSendThread.Start(); _serverReceiveThread = new Thread(ReceiveLoop) { IsBackground = true }; _serverReceiveThread.Start(); _serverAcceptThread = new Thread(AcceptLoop) { IsBackground = true }; _serverAcceptThread.Start(); } catch (Exception e) { JLog.Error("JServerSocketManager initialize faield error message: " + e.Message, JGame.Log.JLogCategory.Network); return; } //start heart beat check _headbeatTimer = new System.Timers.Timer(1000); _headbeatTimer.Elapsed += heatbeatTest; _headbeatTimer.Start(); }
private void AcceptLoop() { JLog.Info("JServerSocketManager server accept loop started", JGame.Log.JLogCategory.Network); while (true) { //JLog.Debug("AcceptLoop loop one begin ...", JGame.Log.JLogCategory.Network); if (_forceEnd) { break; } try { JLog.Debug("JServerSocketManager.AcceptLoop begin to accept", JGame.Log.JLogCategory.Network); Socket currentConnectedSocket = JServerSocket.socket.Accept(); JLog.Debug("JServerSocketManager.AcceptLoop accept finished, to process accepted socket", JGame.Log.JLogCategory.Network); if (null != currentConnectedSocket && currentConnectedSocket.Connected) { lock (_socketLocker) { if (!JConnectedClientSocket.sockets.Contains(currentConnectedSocket)) { JConnectedClientSocket.sockets.Add(currentConnectedSocket); JLog.Info("JServerSocketManager.AcceptLoop client connected :" + (currentConnectedSocket.RemoteEndPoint as IPEndPoint).Address.ToString(), JGame.Log.JLogCategory.Network); _semaphore.Release(); } else { JLog.Info("JServerSocketManager.AcceptLoop connected client connected again" + (currentConnectedSocket.RemoteEndPoint as IPEndPoint).Address.ToString(), JGame.Log.JLogCategory.Network); } } lock (_heartbeatLocker) { if (!_socketHeartDelayTime.ContainsKey(currentConnectedSocket)) { _socketHeartDelayTime.Add(currentConnectedSocket, 0); } } } } catch (Exception e) { JLog.Error("JServerSocketManager accept loop error message:" + e.Message, JGame.Log.JLogCategory.Network); Thread.Sleep(200); } //JLog.Debug("AcceptLoop loop one end ...", JGame.Log.JLogCategory.Network); } JLog.Info("JServerSocketManager server accept loop end.", JGame.Log.JLogCategory.Network); }
protected bool SendToServer(JObjAccountRegisterReq obj) { try { JNetworkDataOperator.SendDataToServer(JPacketType.npt_accountRegister_req, obj); return(true); } catch (Exception e) { JLog.Debug("发送数据失败"); JLog.Error(e.Message); return(false); } }
protected bool SendToServer(JObj_SignIn obj) { try { JNetworkDataOperator.SendData(JPacketType.npt_signin_req, obj); return(true); } catch (Exception e) { JLog.Debug("发送数据失败"); JLog.Error(e.Message); return(false); } }
public void ShutDown() { _forceEnd = true; try { JServerSocket.socket.Close(); } catch (Exception e) { JLog.Error(e.Message, JGame.Log.JLogCategory.Network); } }
public void run(IDataSet dataSet) { IStreamObj obj = dataSet.getData(JObjectType.account_register_ret); if (null == obj || null == (obj as JObjAccountRegisterRet)) { JLog.Error("JProcessorAccountRegisterRet : obj is empty!"); } else if (null != registerRetGot) { registerRetGot((obj as JObjAccountRegisterRet).Result); } }
public static void addData(JPacketType type, IStreamObj obj) { try { JLogicUserData.Data.setData(obj); lock (_locker) { JLocalDataProcessors.Data.Enqueue(type); } _semaphore.Release(); } catch (Exception e) { JLog.Error("JLocalDataHelper: addData " + e.Message); } }
public void CreateRoleButtonClicked() { JCreateRoleReqObject obj = new JCreateRoleReqObject(); //ToDo:检测是否合法 obj.RoleName = RoleName.text; obj.RoleType = CreatePlayerUtil.type; try { JLocalDataHelper.addData(JPacketType.pt_createRole_req, obj); return; } catch (Exception e) { Debug.LogError("发送数据失败"); JLog.Error(e.Message); return; } }
public DataSet Select(string sql) { if (!Connected) { return(null); } try { return(QuerySet(sql)); } catch (Exception e) { JLog.Error("Select SQL:" + sql + "error message:" + e.Message.ToString()); return(null); } }
public static void MainLoop() { if (null == JNetworkInteractiveData.SendData || null == JNetworkInteractiveData.SendData.Data) { JLog.Error("JNetworkDataSenderThread: JNetworkInteractiveData checked empty, please check initialize", JGame.Log.JLogCategory.Network); return; } if (null == JClientSocket.socket) { JLog.Error("JNetworkDataSenderThread: JClientSocket.socket is null, please check initialize", JGame.Log.JLogCategory.Network); return; } JLog.Info("JNetworkDataSenderThread: main loop started", JGame.Log.JLogCategory.Network); while (true) { if (_requireEnd) { break; } try { List <JNetworkData> dataList = JNetworkDataOperator.TakeSendData(1000); if (null == dataList) { continue; } foreach (JNetworkData data in dataList) { JClientSocket.socket.Send(data.Data); JLog.Debug("JNetworkDataSenderThread: send one network packet", JGame.Log.JLogCategory.Network); } } catch (Exception e) { JLog.Error(e.Message, JGame.Log.JLogCategory.Network); } } JLog.Info("JNetworkDataSenderThread main loop end.", JGame.Log.JLogCategory.Network); }
public override void run(IDataSet dataSet) { IStreamObj obj = dataSet.getData(JObjectType.sign_in_ret); if (null == obj || null == (obj as JObj_SignRet)) { JLog.Error("JProcesserSignInGet : obj is empty!"); } if ((obj as JObj_SignRet).Result == true) { //todo:... if (null != toSignIn) { toSignIn(); } } }
public static JPacketType GetNetworkPacketType(JNetworkData data) { if (null == data) { return(JPacketType.npt_unknown); } try { JInputStream inputStream = new JInputStream(data.Data); return((JPacketType)inputStream.Reader.ReadInt16()); } catch (Exception e) { JLog.Error("JNetworkHelper.JPacketType error message :" + e.Message); } return(JPacketType.npt_unknown); }
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); }
public IStreamObj getData(JObjectType type) { IStreamObj obj = null; try { _lock.AcquireReaderLock(-1); if (_myData.ContainsKey((ushort)type)) { obj = _myData [(ushort)type]; } } catch (Exception e) { JLog.Error(e.Message); } finally{ _lock.ReleaseReaderLock(); } return(obj); }
// Update is called once per frame /*void Update () { * * }*/ public void InitializeManagers() { IPAddress address = null; try { IPHostEntry hostEntry = Dns.GetHostEntry(ServerDomainName); address = hostEntry.AddressList [0]; } catch (Exception e) { JLog.Error(e.Message, JGame.Log.JLogCategory.Network); return; } if (null == address) { return; } JGame.JGameManager.SingleInstance.initialize(IsServer, address.ToString(), ServerPort); }
public void run(IDataSet dataSet) { IStreamObj obj = dataSet.getData(JObjectType.sign_in_ret); if (null == obj || null == (obj as JObj_SignRet)) { JLog.Error("JProcesserSignInGet : obj is empty!"); } if ((obj as JObj_SignRet).Result == false) { JLog.Info("Received JObj_SignRet but account and code is not registed!"); } //todo:...remind to regist else if (null != toSignIn) { JLogicUserData.setLocalData(obj); toSignIn(); } }
public static void ReceiveData(int len, byte[] data, EndPoint remoteEndPoint) { JNetworkData networkData = new JNetworkData(); networkData.Len = len; networkData.Data = data; networkData.RemoteEndPoint = remoteEndPoint; try { lock (_receiveLocker) { JNetworkInteractiveData.ReceivedData.Data.Enqueue(networkData); _receivedSemaphore.Release(); } JLog.Debug("JNetworkDataOperator.ReceiveData : added one data to received data queue", JGame.Log.JLogCategory.Network); } catch (Exception e) { JLog.Error("ReceiveData:" + e.Message, JGame.Log.JLogCategory.Network); } }
public bool DoSql(string sql, ref string msg) { if (!Connected) { return(false); } try { MySqlCommand command = new MySqlCommand(sql, _mysql_connection); int nCount = command.ExecuteNonQuery(); JLog.Debug("SQL:" + sql + "\nexectued effect lines:" + nCount.ToString()); } catch (Exception e) { JLog.Error("SQL:" + sql + "error message:" + e.Message.ToString()); return(false); } return(true); }
public void setData(IStreamObj obj) { try { _lock.AcquireWriterLock(-1); if (!_myData.ContainsKey(obj.Type())) { _myData.Add(obj.Type(), obj); } else { _myData [obj.Type()] = obj; } } catch (Exception e) { JLog.Error(e.Message); } finally { _lock.ReleaseWriterLock(); } }
private void AcceptLoop() { JLog.Info("JServerSocketManager server accept loop started", JGame.Log.JLogCategory.Network); while (true) { //JLog.Debug("AcceptLoop loop one begin ...", JGame.Log.JLogCategory.Network); if (_forceEnd) { break; } try { Socket currentConnectedSocket = JServerSocket.socket.Accept(); if (null != currentConnectedSocket) { lock (_socketLocker) { if (!JConnectedClientSocket.sockets.Contains(currentConnectedSocket)) { JConnectedClientSocket.sockets.Add(currentConnectedSocket); JLog.Info("client connected :" + (currentConnectedSocket.RemoteEndPoint as IPEndPoint).Address.ToString(), JGame.Log.JLogCategory.Network); _semaphore.Release(); } } } } catch (Exception e) { JLog.Error("JServerSocketManager accept loop error message:" + e.Message, JGame.Log.JLogCategory.Network); } //JLog.Debug("AcceptLoop loop one end ...", JGame.Log.JLogCategory.Network); } JLog.Info("JServerSocketManager server accept loop end.", JGame.Log.JLogCategory.Network); }