public static void Send(MsgBase msg) { if (socket == null || !socket.Connected) { return; } byte[] nameBytes = MsgBase.EcodeName(msg); byte[] bodyBytes = MsgBase.Encode(msg); Debug.Log($"[Send] {System.Text.Encoding.UTF8.GetString(nameBytes)}"); Debug.Log($"[Send] {System.Text.Encoding.UTF8.GetString(bodyBytes)}"); int len = nameBytes.Length + bodyBytes.Length; byte[] sendBytes = new byte[2 + len];//增加总消息长度 //组装长度 sendBytes[0] = (byte)(len % 256); sendBytes[1] = (byte)(len / 256); //组装名字 Array.Copy(nameBytes, 0, sendBytes, 2, nameBytes.Length); //组装消息体 Array.Copy(bodyBytes, 0, sendBytes, 2 + nameBytes.Length, bodyBytes.Length); Debug.Log($"[Send] {System.Text.Encoding.UTF8.GetString(sendBytes)}"); //写入队列 ByteArray ba = new ByteArray(sendBytes); int count = 0; lock (writeQueue) { writeQueue.Enqueue(ba); count = writeQueue.Count; } if (count == 1) { socket.BeginSend(sendBytes, 0, sendBytes.Length, 0, SendCallback, socket); } }