コード例 #1
0
	    // 接受消息
	    public void readMessage(byte[] bytes)
	    {
	        //消息读取完成后开始解析 
	        MemoryStream ms = new MemoryStream(bytes, 0, bytes.Length);
	        VitByteArray arr = new VitByteArray(ms);
	        while (arr.Postion < bytes.Length)
	        {
	            
				int messageLength = Utils.BigtoLittle32 (arr.ReadInt());

	            if ((arr.Postion + messageLength - 4 + MsgHeadSize) > bytes.Length)
	            {
	                int lastCount = arr.Length - arr.Postion + 4;
	                allCount -= lastCount;
	                Middle = new Byte[lastCount];
	                Buffer.BlockCopy(bytes, arr.Postion - 4, Middle, 0, lastCount);
	                break;
	            }
				int messageID =  Utils.BigtoLittle32( arr.ReadInt());
	            //转换为Socket消息模型
				VitSocketModel model = new VitSocketModel();
	            model.bodyLength = messageLength-4;
	            model.messageID = messageID;
	            byte[] data = new byte[messageLength-4];
	            arr.ReadBytes(data, 0, (uint)messageLength);
	            model.message = data;

				messages.Add(model);
	        }

	    }
コード例 #2
0
ファイル: VitHttpScript.cs プロジェクト: zonalizengcun/ymwl
	    // 解析消息
	    void parseMessage(byte[] bytes)
	    {
	        //消息读取完成后开始解析 
	        MemoryStream ms = new MemoryStream(bytes, 0, bytes.Length);
	        VitByteArray arr = new VitByteArray(ms);
	        while (arr.Postion < bytes.Length)
	        {
	            int messageLength = arr.ReadInt();
				messageLength = Utils.BigtoLittle32(messageLength);
	            if ((arr.Postion + messageLength - 4 + MsgHeadSize) > bytes.Length)
	            {
	                Debug.LogError("解析消息长度不一致[ " + messageLength + " ][ " +  bytes.Length + " ]");
	                break;
	            }
	            int messageID = arr.ReadInt();
				messageID = Utils.BigtoLittle32(messageID);
	            //转换为Socket消息模型
	            VitSocketModel model = new VitSocketModel();
	            model.bodyLength = messageLength;
	            model.messageID = messageID;
	            byte[] pdata = new byte[messageLength];
				arr.ReadBytes(pdata, 0, (uint)messageLength);
				model.message = pdata;
	            // 解析proto对象
				VitProtobufDispatcher.Instance.OnMessage(model);
	        }
	    }
コード例 #3
0
	    // 发送消息
	    public void sendMessage(object msg,int messageID)
	    {
	        byte[] data;
	        using (MemoryStream ms = new MemoryStream())
	        {
	            ProtoModelSerializer serializer = new ProtoModelSerializer();
	            serializer.Serialize(ms, msg);
	            data = new byte[ms.Length];
	            ms.Position = 0;
	            ms.Read(data, 0, data.Length);
	        }

	        VitByteArray arr = new VitByteArray();
	        arr.WriteInt(data.Length +4);
	        arr.WriteInt(messageID);

	        if (data != null)
	        {
	            arr.WriteBytes(data);
	        }

	        try
	        {
	            socket.Send(arr.Buffer);
	        }
	        catch (SocketException e)
	        {
	            Debug.Log(" " + e.ErrorCode + " " + e.Message);
	        }
	    }
コード例 #4
0
ファイル: VitHttpScript.cs プロジェクト: zonalizengcun/ymwl
	    // POST请求 - protobuf
	    IEnumerator POST(string url, object msg, int messageID)
	    {
			Log.DebugInfo ("发送请求................... messageID == " + messageID);
	        byte[] data;
	        using (MemoryStream ms = new MemoryStream())
	        {
	            ProtoModelSerializer serializer = new ProtoModelSerializer();
	            serializer.Serialize(ms, msg);
				Log.DebugInfo ("serializer...");
	            data = new byte[ms.Length];
	            ms.Position = 0;
	            ms.Read(data, 0, data.Length);
	        }
			System.Text.UTF8Encoding converter = new System.Text.UTF8Encoding();

//			string token = "555566";
			byte[] tokeyarray = converter.GetBytes(Utils.m_instance.m_useerTokey);

			VitByteArray arr = new VitByteArray();			
			arr.WriteInt(messageID);
			arr.WriteShort (tokeyarray.Length);//token
			arr.WriteBytes (tokeyarray);

//	        arr.WriteInt(data.Length);
	        if (data != null)
	        {
	            arr.WriteBytes(data);
	        }

//			Debug.Log ("send...." + url + "  " + arr.Length + "   " + data.Length + "   tokeyarray " + tokeyarray.Length);

	        WWW www = new WWW(url, arr.Buffer);

	        yield return www;

	        if (www.error != null)
	        {
	            //POST请求失败
				Log.DebugInfo("error is :" + www.error);
	        }
	        else
	        {
	            parseMessage(www.bytes);
	        }
	    }