public string DoA014Query(string a014_id_, string objid_, string table____) { string sql_ = objid_; string[] sqllist = Regex.Split(objid_, "<V></V>", RegexOptions.IgnoreCase); string e_sqllist = ""; for (int i = 0; i < sqllist.Length; i++) { string str_sql = sqllist[i]; if (str_sql == null || str_sql.Length < 5) { continue; } /*获取要处理的sql*/ try { string e_sql = "pkg_a.doa014('" + a014_id_ + "','" + table____ + "','" + str_sql + "','" + GlobeAtt.A007_KEY + "',[A311_KEY])"; e_sqllist += "begin " + e_sql + ";end;"; e_sql = Fun.execSql(e_sql, GlobeAtt.A007_KEY, GlobeAtt.A002_KEY, "A014_ID=" + a014_id_); if (e_sql != "0") { return(e_sql); } } catch (Exception ex) { return("00" + ex.Message); } } // public string execSqlList(string sqlxml, string user_id_, string menu_id_,string key_id,string a014_id_) Fun.execSqlList(e_sqllist, GlobeAtt.A007_KEY, GlobeAtt.A002_KEY, "[A311_KEY]", a014_id_); return("00" + BaseMsg.getMsg("M0018"));; }
public Message Deserialize(byte[] buffer, int offset, int size) { if (size <= 4) { return(null); } //java use big endian int curOffset = offset; int restSize = size; MemoryStream baseStream = new MemoryStream(buffer, offset, size); BaseMsg baseMsg = null; try { baseMsg = (BaseMsg)ProtoBuf.Serializer.NonGeneric.Deserialize(typeof(BaseMsg), baseStream); } catch (Exception ex) { LogU.Error(ex.StackTrace); } Message msg = new Message(); msg.Id = baseMsg.id; msg.BaseMsg = baseMsg; return(msg); }
void OnPlayerConnect(Session session, BaseMsg message) { //TODO load from db var info = new Player(); info.UserId = _idCounter++; info.PeerTcp = session; info.PeerUdp = session; _id2Player[info.UserId] = info; session.BindInfo = info; _curCount++; if (_curCount >= Game.MaxPlayerCount) { //TODO temp code _game = new Game(); var players = new Player[_curCount]; int i = 0; foreach (var player in _id2Player.Values) { player.LocalId = (byte)i; player.Game = _game; players[i] = player; i++; } _game.DoStart(0, 0, 0, players, "123"); } Debug.Log("OnPlayerConnect count:" + _curCount + " "); }
//********************************************************************** //********************************************************************** //********************************************************************** // Receive message handlers public override void processRxMsg(ByteContent aMsg) { BaseMsg tRxMsg = (BaseMsg)aMsg; // Message jump table based on message type. // Calls corresponding specfic message handler method. switch (tRxMsg.mMessageType) { case MsgIdT.cTestMsg: processRxMsg((TestMsg)tRxMsg); break; case MsgIdT.cStatusRequestMsg: processRxMsg((StatusRequestMsg)tRxMsg); break; case MsgIdT.cStatusResponseMsg: processRxMsg((StatusResponseMsg)tRxMsg); break; case MsgIdT.cDataMsg: processRxMsg((DataMsg)tRxMsg); break; default: Prn.print(Prn.ThreadRun1, "NetworkThread.processRxMsg UNKNOWN"); break; } }
public void SendTcp(EMsgSC msgId, BaseMsg body) { Serializer serializer = new Serializer(); body.Serialize(serializer); _netTcp?.SendMessage(msgId, serializer.CopyData()); }
private void SanQrEventHandler(BaseMsg baseMsg) { //此处编写业务处理代码 var msg = baseMsg as ScanQrEventMsg; QrLogin(msg, msg.EventKey); }
private void UserGetCardHandler(BaseMsg baseMsg) { var accessToken = AccessTokenBox.GetTokenValue(); var msg = baseMsg as GetCardEventMsg; var ss = CardVoucher.UpdateMeeting(accessToken, msg.UserCardCode, Utils.ConvertDateTimeInt(DateTime.Now.AddHours(2)), Utils.ConvertDateTimeInt(DateTime.Now.AddHours(4)), "C区", "东北门", "2 排 15 号"); }
public void OnNetMsg(Player player, ushort opcode, BaseMsg msg) { var type = (EMsgSC)opcode; switch (type) { //login //room case EMsgSC.C2G_PlayerInput: C2G_PlayerInput(player, msg); break; case EMsgSC.C2G_HashCode: C2G_HashCode(player, msg); break; case EMsgSC.C2G_LoadingProgress: C2G_LoadingProgress(player, msg); break; case EMsgSC.C2G_ReqMissFrame: C2G_ReqMissFrame(player, msg); break; case EMsgSC.C2G_RepMissFrameAck: C2G_RepMissFrameAck(player, msg); break; default: Debug.Log("Unknow msg " + type); break; } }
public void SendTcp(EMsgSC msgId, BaseMsg body) { var writer = new Serializer(); body.Serialize(writer); netClient?.SendMessage(msgId, writer.CopyData()); }
private void ClickEventHandler(BaseMsg baseMsg) { // TODO var msg = (ClickEventMsg)baseMsg; Utils.OutPrint(msg.EventKey); switch (msg.EventKey) { case "SelectionClick": List <ResArticle> acticlesMulti = new List <ResArticle>(); acticlesMulti.Add(new ResArticle { Title = "闪电侠海报~", Description = "闪电侠迷~", Url = "http://skywalkerxl.free.ngrok.cc/SearchYouWant.html", PicUrl = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1507971147471&di=954cd5f3cd5348ac55ab41cace99eb2d&imgtype=0&src=http%3A%2F%2Fimg31.mtime.cn%2FCMS%2FNews%2F2014%2F11%2F19%2F080838.63641086_620X620.jpg" }); acticlesMulti.Add(new ResArticle { Title = "罗技k310", Description = "图文2的描述", Url = "http://skywalkerxl.free.ngrok.cc/SearchYouWant.html", PicUrl = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1507971147471&di=954cd5f3cd5348ac55ab41cace99eb2d&imgtype=0&src=http%3A%2F%2Fimg31.mtime.cn%2FCMS%2FNews%2F2014%2F11%2F19%2F080838.63641086_620X620.jpg" }); acticlesMulti.Add(new ResArticle { Title = "罗技k310", Description = "图文2的描述", Url = "http://skywalkerxl.free.ngrok.cc/SearchYouWant.html", PicUrl = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1507971147471&di=954cd5f3cd5348ac55ab41cace99eb2d&imgtype=0&src=http%3A%2F%2Fimg31.mtime.cn%2FCMS%2FNews%2F2014%2F11%2F19%2F080838.63641086_620X620.jpg" }); acticlesMulti.Add(new ResArticle { Title = "罗技k310", Description = "图文2的描述", Url = "http://skywalkerxl.free.ngrok.cc/SearchYouWant.html", PicUrl = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1507971147471&di=954cd5f3cd5348ac55ab41cace99eb2d&imgtype=0&src=http%3A%2F%2Fimg31.mtime.cn%2FCMS%2FNews%2F2014%2F11%2F19%2F080838.63641086_620X620.jpg" }); msg.ResArticles(acticlesMulti); break; } }
void OnNet_ReqMissFrame(Player player, BaseMsg data) { var reqMsg = data as Msg_ReqMissFrame; var nextCheckTick = reqMsg.StartTick; Log($"OnNet_ReqMissFrame nextCheckTick id:{player.LocalId}:{nextCheckTick}"); int count = System.Math.Min(System.Math.Min((Tick - 1), allHistoryFrames.Count) - nextCheckTick, MaxRepMissFrameCountPerPack); if (count <= 0) { return; } var msg = new Msg_RepMissFrame(); var frames = new ServerFrame[count]; for (int i = 0; i < count; i++) { frames[i] = allHistoryFrames[nextCheckTick + i]; Logging.Debug.Assert(frames[i] != null); } msg.startTick = frames[0].tick; msg.frames = frames; SendUdp(player, EMsgSC.G2C_RepMissFrame, msg, true); }
/// <summary> /// 根据命令类型返回相关响应类 /// </summary> /// <param name="header"></param> /// <param name="bodyBytes"></param> /// <returns></returns> private static BaseMsg GetSocketRespByHeader(MsgHeaderEnt header, byte[] bodyBytes) { // todo 完善信息 BaseMsg resp = null; switch (header.CommandType) { case CommandType.ConnectResp: resp = new ConnectResp(bodyBytes, header); break; //case CommandType.DeliverResp: // resp = new DeliverResp(bodyBytes, header); // break; case CommandType.SubmitResp: resp = new SubmitResp(bodyBytes, header); break; case CommandType.ActiveTest: resp = new ActiveTestReq(bodyBytes, header); break; case CommandType.ActiveTestResp: resp = new ActiveTestResp(bodyBytes, header); break; default: resp = new UnKnowResp(bodyBytes, header); break; } return(resp); }
public void SendTcp(EMsgSC msgId, BaseMsg body) { var writer = new Serializer(); writer.PutInt16((short)msgId); body.Serialize(writer); _netTcp?.SendMessage(EMsgSC.C2G_TcpMessage, writer.CopyData()); }
public void BorderTcp(EMsgSC type, BaseMsg data) { var bytes = data.ToBytes(); foreach (var player in Players) { player?.SendTcp(type, bytes); } }
public void BorderTcp(EMsgSC type, BaseMsg data) { var msg = MessageHelper.Create((short)type, data); foreach (var player in Players) { player?.SendTcp(msg); } }
private static void DoAction(MsgRouter router, BaseMsg msg) { TestAck ack; try { switch (msg.Action) { case "Normal": router.ReplyTo(msg, new TestAck(msg.Value)); break; case "Exception": ack = new TestAck(); ack.Exception = msg.Value; router.ReplyTo(msg, ack); break; case "Ignore": break; case "ActionCount": ack = new TestAck(); lock (syncLock) ack.Value = msg.Value + ": " + actionCount.ToString(); router.ReplyTo(msg, ack); break; case "Throw-Exception": Assert.Fail(msg.Value); break; case "Sleep": Thread.Sleep(TimeSpan.FromSeconds(router.SessionTimeout.TotalSeconds + 5)); router.ReplyTo(msg, new TestAck("Hello World!")); break; default: throw new InvalidOperationException("Unexpected action."); } } finally { lock (syncLock) actionCount++; } }
protected void Page_Load(object sender, EventArgs e) { base.PageBase_Load(sender, e); /*获取当前的角色列表*/ A014ID = Request.QueryString["A014ID"] == null ? "" : Request.QueryString["A014ID"].ToString(); ROWID = Request.QueryString["ROWID"] == null ? "" : Request.QueryString["ROWID"].ToString(); dt_A014 = Fun.getDtBySql("Select t.* from A014 t where t.a014_id='" + A014ID + "'"); if (dt_A014.Rows.Count == 0) { Response.Write("<script>winclose();</script>"); } IF_FIRST = dt_A014.Rows[0]["IF_FIRST"].ToString(); DataTable dt_index = new DataTable(); dt_index = Fun.getDtBySql("select f_get_data_index() as c from dual"); data_index = dt_index.Rows[0][0].ToString(); try { if (IF_FIRST == "4") { child_url = dt_A014.Rows[0]["A014_SQL"].ToString(); DataTable dt_url = new DataTable(); dt_url = Fun.getDtBySql(child_url.Replace("[ROWID]", ROWID)); child_url = dt_url.Rows[0][0].ToString(); width_ = dt_url.Rows[0][1].ToString(); height_ = dt_url.Rows[0][2].ToString(); } if (IF_FIRST == "5") { child_url = dt_A014.Rows[0]["NEXT_DO"].ToString(); exec_sql = dt_A014.Rows[0]["A014_SQL"].ToString(); dt_data = Fun.getDtBySql(child_url.Replace("[ROWID]", ROWID)); int max_width = 0; int max_height = 0; for (int i = 0; i < dt_data.Rows.Count; i++) { string width = dt_data.Rows[i]["width"].ToString(); string height = dt_data.Rows[i]["height"].ToString(); if (int.Parse(width) > max_width) { max_width = int.Parse(width); } max_height += int.Parse(height) + 25; } width_ = max_width.ToString(); height_ = max_height.ToString(); } } catch { Response.Write("<script> alert(\"" + BaseMsg.getMsg("M0014") + "\");winclose();</script>"); } }
void C2G_PlayerPing(Player player, BaseMsg data) { var msg = data as Msg_C2G_PlayerPing; player?.SendUdp(EMsgSC.G2C_PlayerPing, new Msg_G2C_PlayerPing() { localId = msg.localId, sendTimestamp = msg.sendTimestamp, timeSinceServerStart = LTime.realtimeSinceStartupMS - _gameStartTimestampMs }); }
private int DataReceiveCallBack(NumNetType nType, string strIp, int nPort, byte[] buffer, int isize) { try { switch (nType) { case NumNetType.Data: { List <byte[]> listRec = adddata(buffer, strIp, nPort); foreach (var va in listRec) { int len = 0; int serialn = 0; int pktype = 0; string re = ""; byte[] bres = null; m_CmdBuild.MessageAnalysis(va, ref len, ref serialn, ref pktype, ref re, ref bres); BaseMsg msg = new BaseMsg(); msg.FromIp = strIp; msg.FromPort = nPort; msg.cmd = pktype.ToString(); msg.Type = MSGType.msgRequest; msg.xml = re; msg.xmlbyte = bres; msg.Seq = serialn; //LogHelper.Trace($"Net Receive:{BitConverter.ToString(va)}:pktype={pktype};fromip:{strIp};fromport{nPort}"); m_PushMsgCallBack(msg); } } break; case NumNetType.ClientConnect: { //Console.WriteLine("ClientConnect ip ={0},port ={1}", strIp, nPort); //BaseMsg msg = new BaseMsg(); //msg.FromIp = strIp; //msg.FromPort = nPort; //msg.Type = MSGType.msgNetConnect; //m_PushMsgCallBack(msg); } break; case NumNetType.ClientClose: { BaseMsg msg = new BaseMsg(); msg.FromIp = strIp; msg.FromPort = nPort; msg.Type = MSGType.msgNetClose; m_PushMsgCallBack(msg); m_ClientObj.bConnected = false; } break; } } catch (Exception) { } return(0); }
//广播 public virtual void BrocatBuffer(byte[] msg) { foreach (RefreshObject refobj in this.GetVisibleList().Values) { BaseObject obj = refobj.obj; if (obj.type == OBJECTTYPE.PLAYER && obj.GetGameSession() != null) { BaseMsg data = new BaseMsg(); data.Create(msg, obj.GetGamePackKeyEx()); obj.SendData(data.GetBuffer()); } } }
void OnPlayerQuit(Session session, BaseMsg message) { var player = session.GetBindInfo <Player>(); if (player == null) { return; } _curCount--; Debug.Log("OnPlayerQuit count:" + _curCount); _id2Player.Remove(player.UserId); if (_curCount == 0) { _game = null; } }
private void KfHandler(BaseMsg baseMsg) { var msg = (KfEventMsg)baseMsg; //处理不同的会话事件 switch (msg.Event) { case EventType.KF_CLOSE_SESSION: break; case EventType.KF_CREATE_SESSION: break; case EventType.KF_SWITCH_SESSION: break; } }
/// <summary> /// 发送命令 /// </summary> /// <param name="req"></param> public bool Send(BaseMsg req) { if (req.MsgHeader.CommandType == CommandType.Connect) { return(false); } req.MsgHeader.SequenceId = GetNextSequenceId(); var command = new CmppCommand() { Request = req }; Option.CommandQueue.Enqueue(command); return(true); }
void C2G_PlayerInput(Player player, BaseMsg data) { if (State != EGameState.PartLoaded && State != EGameState.Playing) { return; } if (State == EGameState.PartLoaded) { Log("First input: game start playing"); State = EGameState.Playing; } var input = data as Msg_PlayerInput; #if DEBUG_SHOW_INPUT if (input.Commands != null && input.Commands?.Length > 0) { var cmd = input.Commands[0]; var playerInput = new Deserializer(cmd.content).Parse <Lockstep.Game.PlayerInput>(); if (playerInput.Deg != 0 && (input.Tick < Tick)) { Debug.Log( $"curTick{Tick} isOutdate{input.Tick < Tick} RecvInput actorID:{input.ActorId} inputTick:{input.Tick} move:{playerInput.Deg}"); } } #endif //Debug.Log($"RecvInput actorID:{input.ActorId} inputTick:{input.Tick} Tick{Tick}"); if (input.Tick < Tick) { return; } var frame = GetOrCreateFrame(input.Tick); var id = input.ActorId; if (!_allNeedWaitInputPlayerIds.Contains(id)) { _allNeedWaitInputPlayerIds.Add(id); } frame.Inputs[id] = input; _CheckBorderServerFrame(false); }
void QrLogin(BaseMsg baseMsg, string key) { var app = HttpContext.Current.Application; app.Lock(); var logins = app["logins"] as List <WxLogin>; var logininfo = logins.FirstOrDefault(l => l.key.ToString() == key); if (logininfo == null) { baseMsg.ResText(param, "不存在登陆信息"); } else { logininfo.openid = baseMsg.FromUserName; HttpContext.Current.Response.Write(""); } app.UnLock(); }
void C2G_HashCode(Player player, BaseMsg data) { var hashInfo = data as Msg_HashCode; var id = player.LocalId; for (int i = 0; i < hashInfo.HashCodes.Length; i++) { var code = hashInfo.HashCodes[i]; var tick = hashInfo.StartTick + i; //Debug.Log($"tick: {tick} Hash {code}" ); if (_hashCodes.TryGetValue(tick, out HashCodeMatcher matcher1)) { if (matcher1 == null || matcher1.sendResult[id]) { continue; } if (matcher1.hashCode != code) { OnHashMatchResult(tick, code, false); } matcher1.count = matcher1.count + 1; matcher1.sendResult[id] = true; if (matcher1.IsMatchered) { OnHashMatchResult(tick, code, true); } } else { var matcher2 = new HashCodeMatcher(MaxPlayerCount); matcher2.count = 1; matcher2.hashCode = code; matcher2.sendResult[id] = true; _hashCodes.Add(tick, matcher2); if (matcher2.IsMatchered) { OnHashMatchResult(tick, code, true); } } } }
void OnNet_LoadingProgress(Player player, BaseMsg data) { if (State != EGameState.Loading) { return; } var msg = data as Msg_C2G_LoadingProgress; if (playerLoadingProgress == null) { playerLoadingProgress = new byte[MaxPlayerCount]; } playerLoadingProgress[player.LocalId] = msg.Progress; //Log($"palyer{player.LocalId} Load {msg.Progress}"); BorderTcp(EMsgSC.G2C_LoadingProgress, new Msg_G2C_LoadingProgress() { Progress = playerLoadingProgress }); if (msg.Progress < 100) { return; } var isDone = true; foreach (var progress in playerLoadingProgress) { if (progress < 100) { isDone = false; break; } } if (isDone) { OnFinishedLoaded(); } }
public void getFundsBaseMessage() { try { byte[] buf = new WebClient().DownloadData(FUND_BASE_MESSAGE_URL); string html = Encoding.UTF8.GetString(buf); string basePattern = "\\[\"[0-9]*\",\"[A-Z]*\",\"[^,]*\",\"[^,]*\"\\]"; MatchCollection matches = Regex.Matches(html, basePattern); foreach (var fundBaseMessage in matches) { BaseMsg aFund = new BaseMsg(); string codePattern = "(?<=\\[\")[0-9]*(?=\",\"[A-Z]*\",\"[^,]*\",\"[^,]*\"\\])"; MatchCollection ms = Regex.Matches(fundBaseMessage.ToString(), codePattern); Debug.Assert(ms.Count != 0); aFund.code = ms[0].ToString(); string abbreviationPattern = "(?<=\\[\"[0-9]*\",\")[A-Z]*(?=\",\"[^,]*\",\"[^,]*\"\\])"; ms = Regex.Matches(fundBaseMessage.ToString(), abbreviationPattern); Debug.Assert(ms.Count != 0); aFund.abbreviation = ms[0].ToString(); string namePattern = "(?<=\\[\"[0-9]*\",\"[A-Z]*\",\")[^,]*(?=\",\"[^,]*\"\\])"; ms = Regex.Matches(fundBaseMessage.ToString(), namePattern); Debug.Assert(ms.Count != 0); aFund.name = ms[0].ToString(); string typePattern = "(?<=\\[\"[0-9]*\",\"[A-Z]*\",\"[^,]*\",\")[^,]*(?=\"\\])"; ms = Regex.Matches(fundBaseMessage.ToString(), typePattern); Debug.Assert(ms.Count != 0); aFund.type = ms[0].ToString(); m_funds.Add(aFund); } } catch (System.Exception ex) { MessageBox.Show("网页请求异常,详细信息:" + ex.ToString()); } }
void OnNetMsg(Session session, ushort opcode, BaseMsg msg) { var type = (EMsgSC)opcode; switch (type) { //login // case EMsgSC.L2C_JoinRoomResult: case EMsgSC.C2L_JoinRoom: OnPlayerConnect(session, msg); return; case EMsgSC.C2L_LeaveRoom: OnPlayerQuit(session, msg); return; //room } var player = session.GetBindInfo <Player>(); _game?.OnNetMsg(player, opcode, msg); }
public bool Serialize <T>(ref byte[] buffer, ref int allLength, T instance, int msgId, int playerId) { MemoryStream stream = new MemoryStream(); ProtoBuf.Serializer.Serialize <T>(stream, instance); BaseMsg baseMsg = new BaseMsg(); baseMsg.id = msgId; baseMsg.playerId = playerId; baseMsg.msgData = stream.ToArray(); MemoryStream baseStream = new MemoryStream(buffer); baseStream.Position = 6;//head ProtoBuf.Serializer.Serialize(baseStream, baseMsg); allLength = (int)baseStream.Position; int bodyLength = allLength - 6; if (bodyLength <= 0) { return(false); } byte[] header = new byte[6]; byte[] tmp = BigEndianUtil.ToBytes(NHNet.MSG_TYPE_DATA); Array.Copy(tmp, 0, header, 0, 2); byte[] tmp1 = BigEndianUtil.ToBytes(bodyLength); Array.Copy(tmp1, 0, header, 2, 4); baseStream.Position = 0; BinaryWriter writer = new BinaryWriter(baseStream); writer.Write(header, 0, header.Length); return(true); }
public static Packet DeserializeFrom(byte[] buf) { if (buf.Length < 2) { return(null); } MsgType opcode = (MsgType)buf[0]; byte[] data = new byte[buf.Length - 1]; Array.Copy(buf, 1, data, 0, buf.Length - 1); BaseMsg msg = null; switch (opcode) { case MsgType.S2C_Ping: msg = BaseFormater.FromByte <Msg_S2C_Ping>(data); break; case MsgType.C2S_Ping: msg = BaseFormater.FromByte <Msg_C2S_Ping>(data); break; default: break; } return(new Packet(opcode, msg)); }