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

本文关键字:PC android 图像 何使用 | 更新日期: 2023-09-27 18:26:23

我可以通过蓝牙在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();
            }
        }

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

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

为什么不这么做:

public Boolean sendMessage(byte[] msg)   
{   
   stream.Write(msg, 0, msg.Length);   
   stream.Flush();   
}   

如果你真的需要最后一个"''n",那么在Flush:之前添加

stream.WriteByte((byte)''n');

当我们讨论UTF-8时,为什么要假设文件名只包含ASCII字符??将代码更改为:

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