C# 如何使用C通过蓝牙将图像从PC发送到android

C# 如何使用C通过蓝牙将图像从PC发送到android,c#,file,bluetooth,transfer,C#,File,Bluetooth,Transfer,我能够通过蓝牙在PC和android之间进行数据传输。但现在我想发送大小约为80KB的图像文件。当我发送图像时,只有一部分图像被传输,但没有被传输 彻底地有人知道如何做到这一点吗?我正在使用TCP,并在C平台上工作 string fileName = "send.png"; string filePath = @"C:\Users\Asus 53s\Desktop\"; //path byte[] fileNameByte = Enco

我能够通过蓝牙在PC和android之间进行数据传输。但现在我想发送大小约为80KB的图像文件。当我发送图像时,只有一部分图像被传输,但没有被传输 彻底地有人知道如何做到这一点吗?我正在使用TCP,并在C平台上工作

        string fileName = "send.png";

        string filePath = @"C:\Users\Asus 53s\Desktop\";      //path
        byte[] fileNameByte = Encoding.ASCII.GetBytes(fileName);

        byte[] fileData = File.ReadAllBytes(filePath + fileName);
        byte[] clientData = new byte[4 + fileNameByte.Length + fileData.Length];
        byte[] fileNameLen = BitConverter.GetBytes(fileNameByte.Length);
        fileNameLen.CopyTo(clientData,0);
        fileNameByte.CopyTo(clientData,4);
        fileData.CopyTo(clientData,4+fileNameByte.Length);

        sendMessage(clientData);

              }

    public Boolean sendMessage(byte[] msg)
    {

        {
            if (!msg.Equals(""))
            {
                UTF8Encoding encoder = new UTF8Encoding();
                NetworkStream stream = me.GetStream();
                stream.Write(encoder.GetBytes(msg + "\n"), 0, (msg).Length);

                stream.Flush();

            }
        }

首先将二进制对象转换为字符串,然后将其转换为UTF-8不是一个好主意。。。在转换过程中可能会发生很多不好的事情。sendMessage中还有一个bug

为什么不干脆做:

public Boolean sendMessage(byte[] msg)   
{   
   stream.Write(msg, 0, msg.Length);   
   stream.Flush();   
}   
如果您确实需要最终\n,请在刷新之前添加:

stream.WriteByte((byte)'\n');
当我们讨论UTF-8时,为什么您认为文件名只包含ASCII字符??将该代码更改为:

byte[] fileNameByte = Encoding.UTF8.GetBytes(fileName);

如果不发布任何代码,你怎么能期望任何人知道什么可能是错误!对不起,我已经粘贴了我正在使用的代码。收到了多少图像。你可能需要把它分成小块发送。为了找出代码不工作的原因,您做了哪些工作。取决于蓝牙的版本,它可能非常不可靠。60 KB中的10 KB正在传输。我试着把它分块发送。但第一个数据块只是被重复发送。