//void ReceiveFrame()
    //{
    //    var count = client.Receive(messTmp);
    //    if(count!=0)
    //    {
    //        Debug.Log(count);
    //        string message = BitConverter.ToInt32(messTmp, 0).ToString();
    //        //string message = Encoding.UTF8.GetString(messTmp, 0, count);
    //        //Debug.Log(message);
    //        //myText.GetComponent<Text>().text = message;
    //    }
    //}

    void Receive(Socket socket)
    {
        Task.Factory.StartNew(() =>
        {
            var pack = new BytePkg();
            while (true)
            {
                try
                {
                    if (!socket.Connected)
                    {
                        Debug.Log("连接已断开,停止接收数据;");
                        break;
                    }
                    byte[] prevBytes = new byte[1024];
                    int len          = socket.Receive(prevBytes, prevBytes.Length, SocketFlags.None);
                    Debug.Log(len);
                    var bytes = prevBytes.Take(len).ToArray();
                    Debug.Log(bytes);
                    this.RcvHeadData(pack, bytes);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        });
    }
    void RcvHeadData(BytePkg pack, byte[] bytes)
    {
        var len = bytes.Length;

        pack.headIndex += len;
        if (pack.headIndex < pack.headLen)
        {
            for (int x = 0; x < len; x++)
            {
                pack.headBuff[pack.headIndex - len + x] = bytes[x];
            }
        }
        else
        {
            var actualHeadLen = pack.headIndex - len;
            var skipHeadLen   = pack.headLen - actualHeadLen;

            for (int x = 0; x < skipHeadLen; x++)
            {
                pack.headBuff[actualHeadLen + x] = bytes[x];
            }
            var bodyLen = len;
            if (skipHeadLen > 0)
            {
                bodyLen = len - skipHeadLen;
                pack.InitBodyBuff();
            }
            this.RcvBodyData(pack, bytes.Skip(skipHeadLen).Take(bodyLen).ToArray());
        }
    }
    void RcvBodyData(BytePkg pack, byte[] bytes)
    {
        var len = bytes.Length;

        pack.bodyIndex += len;
        if (pack.bodyIndex < pack.bodyLen)
        {
            for (int x = 0; x < len; x++)
            {
                pack.bodyBuff[pack.bodyIndex - len + x] = bytes[x];
            }
        }
        else
        {
            var actualBodyLen = pack.bodyIndex - len;
            var skipBodyLen   = pack.bodyLen - actualBodyLen;
            for (int x = 0; x < skipBodyLen; x++)
            {
                pack.bodyBuff[actualBodyLen + x] = bytes[x];
            }
            //this.OnReceiveMsg(pack.bodyBuff);
            pack.ResetData();
            this.RcvHeadData(pack, bytes.Skip(skipBodyLen).ToArray());
        }
    }