public void RequestServerState() { string ipInfo = "127.0.0.1";// Config.GetUpdaterConfig("StateServerPath", "Value"); if (string.IsNullOrEmpty(ipInfo)) { //状态服务器地址没有配置/ LogSystem.LogError("RequestServerState --> ipinfo not in config!"); return; } string[] ipinfoStrs = UtilTools.Split(ipInfo, ':'); if (ipinfoStrs.Length < 3) { LogSystem.LogError("RequestServerState -->ipinfo config Error"); return; } ip = ipinfoStrs[0]; port = UtilTools.IntParse(ipinfoStrs[1]); issuerId = UtilTools.IntParse(ipinfoStrs[2]); ServerStateSock sock = new ServerStateSock(OnTextSockConnected, OnTextSockConnectFailed, OnTextSockRecieveData); if (sock != null) { sock.Connect(ip, port); } dataIsReady = false; TimerManager.AddTimer("StateReqOverTime", 10f, StateReqListener); //#endif }
/// <summary> /// 文本协议socket连接失败 /// </summary> /// <param name="textSock"></param> static void OnTextSockConnectFailed(ServerStateSock textSock) { LogSystem.LogError("OnTextSockConnectFailed"); textSock.Disconnect(); instance.dataIsReady = false; if (instance.onServerListOK != null) { instance.onServerListOK(false); } LogSystem.LogError("RequestServerState -->Can't get server list data!"); }
/// <summary> /// 文本协议socket连接成功 /// </summary> /// <param name="textSock"></param> static void OnTextSockConnected(ServerStateSock textSock) { LogSystem.Log("OnTextSockConnected"); if (textSock != null) { ByteArray byteArray = new ByteArray(); byteArray.WriteInt(0); byteArray.WriteInt(0); byteArray.WriteInt(1); byteArray.WriteInt(0); byteArray.WriteInt(44); byteArray.WriteInt(instance.issuerId); bool arrayRight = byteArray.WriteEnd(); if (arrayRight) { textSock.Send(byteArray.m_pData, byteArray.m_nCurPosi); } } }
/// <summary> /// 文本协议Socket消息接受,只用于获取服务器列表数据 /// </summary> /// <param name="textSock"></param> /// <param name="args"></param> static void OnTextSockRecieveData(ServerStateSock textSock, ref VarList args) { LogSystem.Log("OnTextSockRecieveData"); instance.serverList.Clear(); int serverCount = args.GetInt(0); int index = 1; for (int i = 0; i < serverCount; i++) { string serverDataStr = args.GetString(index); index++; string[] dataArray = UtilTools.Split(serverDataStr, '/'); //LoginUI.ServerInfo info = new LoginUI.ServerInfo(); //info.mId = int.Parse(dataArray[0]); //info.mServerName = dataArray[1]; //info.mIp = dataArray[2]; //info.mPort = dataArray[3]; int state = UtilTools.IntParse(dataArray[6]); int service = UtilTools.IntParse(dataArray[5]); // if (instance.serverList.ContainsKey(info.Name)) // { // instance.serverList[info.Name] = info; // } // else // { // instance.serverList.Add(info.Name, info); // } } instance.dataIsReady = true; if (instance.onServerListOK != null) { instance.onServerListOK(true); } }