Esempio n. 1
0
    //这个线程方法用来循环接收消息
    void ReceiveMessage()
    {
        while (true)
        {
            if (!clientSocket.Connected)
            {
                break;
            }
            int length = clientSocket.Receive(data);
            //message = Encoding.UTF8.GetString(data,0,length);

            if (length > 0)
            {
                TheMsg msg2 = ProtobufferTool.Deserialize <TheMsg>(data);
                message = $"{msg2.Name}说:{msg2.Content}";

                sw.Stop();
                //获取运行时间间隔
                TimeSpan ts = sw.Elapsed;
                //获取运行时间[毫秒]
                long times = sw.ElapsedMilliseconds;
                //获取运行的总时间
                long times2 = sw.ElapsedTicks;
                Debug.Log($"times={times} times2={times2}");
            }
        }
    }
Esempio n. 2
0
        private void ReceiveMessage()
        {
            while (true)
            {
                //在接收数据时判断一下Socket是否端口连接
                if (clientSocket.Poll(10, SelectMode.SelectRead))
                {
                    clientSocket.Close(); //关闭当前连接
                    break;                //跳出循环,终止该线程执行
                }

                int length = clientSocket.Receive(data);
                //string message = Encoding.UTF8.GetString(data, 0, length); //ToDo: 接收到数据时,要把该数据分发到各个客户端
                //byte[] data = System.Text.Encoding.UTF8.GetBytes(message);

                //直接广播这个消息
                TCPServer.BroadcastMessage(data);

                if (length > 0)
                {
                    TheMsg msg2    = ProtobufferTool.Deserialize <TheMsg>(data);
                    string message = string.Format("{0}说: {1}", msg2.Name, msg2.Content);
                    Console.WriteLine("收到了消息:" + message + "[" + length + "]");
                }
            }
        }
Esempio n. 3
0
    void Update()
    {
        TheMsg msg = new TheMsg();

        msg.Name = "am the name";
        msg.Num  = 32;

        if (debug)
        {
            Debug.Log(string.Format("The Msg is ( Name:{0},Num:{1} )", msg.Name, msg.Num));
        }
        TheMsg msg2 = null;

        using (var ms = new MemoryStream(msg.CalculateSize()))
        {
            msg.WriteTo(ms);
            ms.Seek(0, SeekOrigin.Begin);
            msg2 = TheMsg.Parser.ParseFrom(ms);
        }

        if (debug)
        {
            Debug.Log(string.Format("The Msg2 is ( Name:{0},Num:{1} )", msg2.Name, msg2.Num));
        }


        //新建一个Person对象,并赋值
        Person p = new Person();

        p.Name = "IongX";
        p.Age  = Time.frameCount;
        p.NameList.Capacity = 4;
        p.NameList.Add("熊");
        p.NameList.Add("棒");
        p.NameList.Add("棒");
        //将对象转换成字节数组
        byte[] databytes = p.ToByteArray();

        //将字节数据的数据还原到对象中
        IMessage IMperson = new Person();
        Person   p1       = new Person();

        p1 = (Person)IMperson.Descriptor.Parser.ParseFrom(databytes);

        //输出测试
        if (debug)
        {
            Debug.Log(p1.Name);
            Debug.Log(p1.Age);
            for (int i = 0; i < p1.NameList.Count; i++)
            {
                Debug.Log(p1.NameList[i]);
            }
            Debug.LogError("----------------");
        }
    }
Esempio n. 4
0
    public void OnSendButtonClick()
    {
        string value = textInput.value;

        TheMsg msg = new TheMsg();

        msg.Name    = "我";
        msg.Content = textInput.value;
        byte[] data = ProtobufferTool.Serialize(msg);
        Send(data);

        textInput.value = "";
    }
Esempio n. 5
0
    public void StartClient(string hostIp, int hostPort)
    {
        // Connect to a remote device.
        try
        {
            // Establish the remote endpoint for the socket.
            // The name of the
            // remote device is "host.contoso.com".
            IPHostEntry ipHostInfo = Dns.GetHostEntry(hostIp);
            IPAddress   ipAddress  = ipHostInfo.AddressList[0];
            IPEndPoint  remoteEP   = new IPEndPoint(ipAddress, hostPort);

            // Create a TCP/IP socket.
            client = new Socket(ipAddress.AddressFamily,
                                SocketType.Stream, ProtocolType.Tcp);

            // Connect to the remote endpoint.
            client.BeginConnect(remoteEP,
                                new AsyncCallback(ConnectCallback), client);
            connectDone.WaitOne();

            TheMsg msg = new TheMsg();
            msg.Name = "apple";
            msg.Num  = 1;

            MessageText.SetMessage("Send protocol buffer data : " + msg.ToString());

            byte[] byteData;
            using (MemoryStream ms = new MemoryStream())
            {
                msg.WriteTo(ms);
                byteData = ms.ToArray();
            }
            // Send test data to the remote device.
            Send(byteData);
            sendDone.WaitOne();

            // Receive the response from the remote device.
            Receive(client);
            receiveDone.WaitOne();

            // Write the response to the console.
            //Console.WriteLine("Response received : {0}", response);
            MessageText.SetMessage("Response received : " + response);
        }
        catch (Exception e)
        {
            //Console.WriteLine(e.ToString());
            MessageText.SetMessage(e.ToString());
        }
    }
Esempio n. 6
0
    void Start()
    {
        #region Class序列化成二进制
        TheMsg msg = new TheMsg();
        msg.Name    = "am the name";
        msg.Content = "haha";
        Debug.Log(string.Format("The Msg is ( Name:{0}, Num:{1} )", msg.Name, msg.Content));

        byte[] bmsg;
        using (MemoryStream ms = new MemoryStream())
        {
            msg.WriteTo(ms);
            bmsg = ms.ToArray();
        }
        #endregion

        #region 二进制反序列化成Class
        TheMsg msg2 = TheMsg.Parser.ParseFrom(bmsg);
        Debug.Log(string.Format("The Msg2 is ( Name:{0}, Num:{1} )", msg2.Name, msg2.Content));
        #endregion
    }
Esempio n. 7
0
    private void _TestProtobuff2()
    {
        //1. new a message.
        TheMsg message_1 = new TheMsg();

        message_1.name = "steve jobs";
        message_1.num  = 20111005;
        Debug.Log("message_1: " + message_1.ToString());

        string filePath = "C:\\D\\message.txt";
        {
            //2. write byte buffer to file.
            ProtobufSerilize.Serialize <TheMsg>(message_1, filePath);
        }

        {
            //3. read content.
            TheMsg message_2 = ProtobufSerilize.DeSerialize <TheMsg>(filePath);
            Debug.Log("message_2: " + message_2.ToString());
        }
    }
Esempio n. 8
0
    void Start()
    {
        TheMsg msg = new TheMsg();

        msg.Name = "am the name";
        msg.Num  = 32;

        Debug.Log(string.Format("The Msg is ( Name:{0},Num:{1} )", msg.Name, msg.Num));

        byte[] bmsg;
        using (MemoryStream ms = new MemoryStream())
        {
            msg.WriteTo(ms);
            bmsg = ms.ToArray();
        }


        TheMsg msg2 = TheMsg.Parser.ParseFrom(bmsg);

        Debug.Log(string.Format("The Msg2 is ( Name:{0},Num:{1} )", msg2.Name, msg2.Num));
    }
Esempio n. 9
0
    public void OnButtonClick()
    {
        Debug.Log("OnButtonClick " + mInputField.text);
        // mText.text = mInputField.text;
        TheMsg msg = new TheMsg();

        msg.Name = mInputField.text;
        msg.Num  = 32;
        //Debug.Log(string.Format("The Msg is ( Name:{0},Num:{1} )", msg.Name, msg.Num));
        byte[] bmsg;
        using (MemoryStream ms = new MemoryStream())
        {
            msg.WriteTo(ms);
            bmsg = ms.ToArray();
        }


        TheMsg msg2 = TheMsg.Parser.ParseFrom(bmsg);

        mText.text = msg2.Name;
    }
    private void _TestProtobuff()
    {
        //1. new a message.
        TheMsg message_1 = new TheMsg();

        message_1.Name = "steve jobs";
        message_1.Num  = 19550224;
        Debug.Log("message1: " + message_1.ToString());

        //2. write byte buffer to file.
        byte[] byte_buffer;
        using (MemoryStream memoryStream = new MemoryStream())
        {
            message_1.WriteTo(memoryStream);
            byte_buffer = memoryStream.ToArray();
        }

        //3. read message from byte buffer.
        TheMsg message_2 = TheMsg.Parser.ParseFrom(byte_buffer);

        Debug.Log("message2: " + message_2.ToString());
    }