// Update is called once per frame void Update() { //lock(TcpMgr.GetMsgQueue()) //{ UniverseMsg msg = TcpMgr.PopQueueMsg(); if (msg == null) { return; } UniverseMsgMgr.RecvServerMsg(msg); //} }
//static public GameObject playerPrefab; static public int SendRegMsg(ulong actorid, String name) { UniverseMsg reg_msg = new UniverseMsg(); reg_msg.msgHead = new UniverseMsgHead(); reg_msg.msgHead.msgId = (int)UniverseMsgId.UNIVERSE_MSG_ID_ACTOR_REGISTE_REQ; reg_msg.msgHead.actorId = 10000; reg_msg.msgBody = new UniverseMsgBody(); reg_msg.msgBody.registeReq = new ActorRegisteReq(); reg_msg.msgBody.registeReq.id = 10000; reg_msg.msgBody.registeReq.name = "wcc"; return(TcpMgr.SendMsg(reg_msg)); }
static public int SendMsg(UniverseMsg msg) { byte[] buf_msg = NetUtil.SerializerMgr.Serialize(msg); int msg_len = buf_msg.Length; byte[] buf_len_msg = BitConverter.GetBytes(msg_len); byte[] total_buff = new byte[buf_msg.Length + buf_len_msg.Length]; buf_len_msg.CopyTo(total_buff, 0); buf_msg.CopyTo(total_buff, buf_len_msg.Length); int sended = clientSocket.Send(total_buff, 0, total_buff.Length, SocketFlags.None); Debug.Log("发送消息完毕 长度"); Debug.Log(msg_len.ToString()); return(0); }
public static void RecvDataFromSocket() { while (true) { //Debug.Log("try recv data"); Thread.Sleep(500); //尝试从网络读取数据 //byte[] result = new byte[1024]; // int max_byte_len = 1024; byte[] recvBytes = new byte[1024]; int read_len = TcpMgr.clientSocket.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息 Debug.Log(string.Format("recive success len {0}, bytes {1}", read_len, recvBytes.Length)); //int read_len = clientSocket.Receive(result); if (read_len > 0) { Debug.LogFormat(string.Format("read len {0}", read_len)); //lock (msgQueue) { //WCCTODO: 先假设每个网络包在一次recv中处理成功,切没有分包(这是个明显的bug,后续需要改掉) Debug.Log("aaa"); int msg_byte_len = BitConverter.ToInt32(recvBytes, 0); Debug.Log(string.Format("msg body len{0}", msg_byte_len)); UniverseMsg msg = NetUtil.SerializerMgr.Deserialize <UniverseMsg>(recvBytes, 4, msg_byte_len);//WCCTODO OFFSET Debug.Log("ccc"); msgQueue.Enqueue(msg); Debug.Log("recv msg data\n"); Debug.Log(string.Format(">>>>>>>>>>>msgid:{0}, actorid:{1}", msg.msgHead.msgId, msg.msgHead.actorId)); } } else { Debug.Log("no data"); } } }
static public int RecvServerMsg(UniverseMsg msg) { switch (msg.msgHead.msgId) { case (int)UniverseMsgId.UNIVERSE_MSG_ID_ACTOR_REGISTE_RSP: { Debug.Log("recv registe rsp"); Vector3 c = new Vector3(); c.Set(0, 0, 0); Quaternion d = new Quaternion(); d.Set(0, 0, 0, 0); string ad = "palyerPrefab"; GameObject.Instantiate(Resources.Load(ad), c, d); //GameObject palyer = (GameObject)GameObject.Instantiate(playerPrefab); //debug code: /* * GameObject obj1 = GameObject.CreatePrimitive(PrimitiveType.Cube); * if(obj1 != null) * { * Debug.Log("create obj success"); * } * obj1.transform.position = new Vector3(1, 1, 1); * obj1.name = "player"; * obj1.transform.Rotate(new Vector3(10, 10, 10)); * obj1.transform.Translate(new Vector3(10, 10, 10)); * * * GameObject obj3 = GameObject.CreatePrimitive(PrimitiveType.Cube); * obj3.transform.position = new Vector3(1, 1, 1); * obj3.name = "player2"; * if (obj3 != null) * { * Debug.Log("create obj success"); * } */ break; } case (int)UniverseMsgId.UNIVERSE_MSG_ID_ACTOR_LOGIN_RSP: { Debug.Log("recv login rsp"); break; } case (int)UniverseMsgId.UNIVERSE_MSG_ID_ACTOR_LOGOUT_RSP: { Debug.Log("recv logout rsp"); break; } case (int)UniverseMsgId.UNIVERSE_MSG_ID_ACTOR_GET_FULL_DATA_RSP: { break; } case (int)UniverseMsgId.UNIVERSE_MSG_ID_ACTOR_SET_POS_RSP: { break; } case (int)UniverseMsgId.UNIVERSE_MSG_ID_ACTOR_MOVE_RSP: { break; } case (int)UniverseMsgId.UNIVERSE_MSG_ID_CHAT_RSP: { break; } case (int)UniverseMsgId.UNIVERSE_MSG_ID_LEARN_SPELL_RSP: { break; } case (int)UniverseMsgId.UNIVERSE_MSG_ID_CAST_SPELL_RSP: { break; } default: { Debug.Log("invalid msg id"); break; } } return(0); }