如何使用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();
}
}
先将二进制对象转换为字符串,然后再将其转换为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);