Windows系统中使用C#编写蓝牙通信程序的简单实例

2019-12-30 12:00:57于海丽

程序界面:

C#,蓝牙,通信程序

SelectBluetoothDeviceDialog是一个InTheHand.Net.Personal提供的窗体,用于选择蓝牙设备:

C#,蓝牙,通信程序

从手机往电脑发送文件需要在电脑上开启监听ObexListener,才能收到文件。

C#,蓝牙,通信程序

核心代码:


BluetoothRadio radio = null;//蓝牙适配器 
string sendFileName = null;//发送文件名 
BluetoothAddress sendAddress = null;//发送目的地址 
ObexListener listener = null;//监听器 
string recDir = null;//接受文件存放目录 
Thread listenThread, sendThread;//发送/接收线程 
 
radio = BluetoothRadio.PrimaryRadio;//获取当前PC的蓝牙适配器 
 
//关于蓝牙设备选择对话框 
SelectBluetoothDeviceDialog dialog = new SelectBluetoothDeviceDialog(); 
dialog.ShowRemembered = true;//显示已经记住的蓝牙设备 
dialog.ShowAuthenticated = true;//显示认证过的蓝牙设备 
dialog.ShowUnknown = true;//显示位置蓝牙设备 
sendAddress = dialog.SelectedDevice.DeviceAddress;//获取选择的远程蓝牙地址 
 
//发送文件操作 
ObexWebRequest request = new ObexWebRequest(sendAddress, Path.GetFileName(sendFileName));//创建网络请求 
WebResponse response = null; 
request.ReadFile(sendFileName);//发送文件 
response = request.GetResponse();//获取回应 
response.Close(); 
 
//接收文件 
radio.Mode = RadioMode.Discoverable;//设置本地蓝牙可被检测 
listener = new ObexListener(ObexTransport.Bluetooth);//创建监听 
listener.Start(); 
listener.Stop(); 
 
ObexListenerContext context = null; 
ObexListenerRequest request = null; 
context = listener.GetContext();//获取监听上下文 
request = context.Request;//获取请求 
string uriString = Uri.UnescapeDataString(request.RawUrl);//将uri转换成字符串 
string recFileName = recDir + uriString; 
request.WriteFile(recFileName);//接收文件 
labelRecInfo.Text = "收到文件" + uriString.TrimStart(new char[] { '/' }