c#实现蓝牙发送、接收数据,给安卓发送文件
实现蓝牙发送 、接收数据,给安卓发送文件
·
首先nuget安装InTheHand.Net
电脑给安卓发送文件代码:千万别先连接再发送,通过抓包发现ObexWebRequest会连接,这里搞了很久才搞定。
BluetoothClient bluetoothClient = new BluetoothClient();
BluetoothRadio radio = BluetoothRadio.Default;
//设置电脑蓝牙可被发现,别人连接你电脑时有用,这里可以不写
radio.Mode = RadioMode.Discoverable;
//设置搜索蓝牙信号时间,单位秒
bluetoothClient.InquiryLength = TimeSpan.FromSeconds(5);
BluetoothDeviceInfo[] devices = bluetoothClient.DiscoverDevices().ToArray();
foreach(BluetoothDeviceInfo d in devices) {
if (d.DeviceName == String.Empty) Console.WriteLine("未命名");
else Console.WriteLine(d.DeviceName);
}
Console.WriteLine("请输入数组编号,按回车:");
string index = Console.ReadLine();
BluetoothDeviceInfo device = devices[Convert.ToInt32(index)]; // 通过上述的扫描获取到的设备信息
Console.WriteLine(device.DeviceAddress.ToString());
//配对 给安卓发送文件可以不写
BluetoothSecurity.PairRequest(device.DeviceAddress, null);
Console.WriteLine("按回车发送:");
Console.ReadLine();
var request = new ObexWebRequest(device.DeviceAddress, "1.txt"); //写文件名
//var request = new ObexWebRequest(BluetoothAddress.Parse("48fda3da7e40"), "1.txt");
request.ReadFile(@"1.txt"); //写文件路径
var response = (ObexWebResponse) request.GetResponse();
Console.ReadLine();
电脑连接电脑发送数据代码:BluetoothService.SerialPort只适合电脑端,连接蓝牙音箱guid搞了很久都没搞定,不知道怎么回事,用库就这点不好,都不知道哪里出了问题,不知道uwp的官方库怎么样,读者有兴趣可以试一下,还可以调用windows底层库win32,不过太麻烦了。
BluetoothClient bluetoothClient = new BluetoothClient();
BluetoothRadio radio = BluetoothRadio.Default;
radio.Mode = RadioMode.Discoverable;
bluetoothClient.InquiryLength = TimeSpan.FromSeconds(5);
BluetoothDeviceInfo[] devices = bluetoothClient.DiscoverDevices().ToArray();
foreach(BluetoothDeviceInfo d in devices) {
if (d.DeviceName == String.Empty) Console.WriteLine("未命名");
else Console.WriteLine(d.DeviceName);
}
Console.WriteLine("请输入数组编号:");
string index = Console.ReadLine();
BluetoothDeviceInfo device = devices[Convert.ToInt32(index)]; // 通过上述的扫描获取到的设备信息
Console.WriteLine(device.DeviceAddress.ToString());
BluetoothSecurity.PairRequest(device.DeviceAddress, null);
bluetoothClient.Connect(device.DeviceAddress, BluetoothService.SerialPort);
//0000110e-0000-1000-8000-00805f9b34fb 0000110b-0000-1000-8000-00805f9b34fb
//bluetoothClient.Connect(device.DeviceAddress, BluetoothService.AudioSink);
//bluetoothClient.Connect(device.DeviceAddress, Guid.Parse("0000111f-0000-1000-8000-00805f9b34fb"));
Console.WriteLine("发送:");
Console.ReadLine();
//Stream stream = bluetoothClient.GetStream();
// 发送数据
byte[] sendData = Encoding.ASCII.GetBytes("haha");
stream.Write(sendData, 0, sendData.Length);
电脑监听电脑接收数据代码:
BluetoothListener listener = new BluetoothListener(BluetoothService.SerialPort);
listener.Start();
BluetoothRadio radio = BluetoothRadio.Default;
radio.Mode = RadioMode.Discoverable;
BluetoothClient client = listener.AcceptBluetoothClient(); // 程序会阻塞在这一行,直到有客户端连接为止
Console.WriteLine("有设备连接了");
// 读取客户端发送的数据
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[1024];
int len = stream.Read(buffer, 0, buffer.Length);
string str = Encoding.ASCII.GetString(buffer, 0, len);
Console.WriteLine(str);
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)