`
raymond.chen
  • 浏览: 1437437 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

通过蓝牙发送消息:PC作为客户端

 
阅读更多

Android  server端代码:

public class BluetoothServerThread extends Thread{
	private BluetoothAdapter adapter = null;
	private UUID uuid = UUID.fromString("04c6093b-0000-1000-8000-00805f9b34fb");
	private BluetoothServerSocket serverSocket;
	
	@Override
	public void run() {
		try{
			adapter = BluetoothAdapter.getDefaultAdapter();
			
			//没有蓝牙设备
			if(adapter == null){
				throw new RuntimeException("Bluetooth not support!");
			}
			
			//打开蓝牙
			if(!adapter.isEnabled()){
				adapter.enable();
			}
			
			serverSocket = adapter.listenUsingRfcommWithServiceRecord("Name", uuid);
			
			while(true){
				BluetoothSocket socket = serverSocket.accept();
				executorService.execute(new SocketThread(socket));
			}
			
		}catch(Exception ex){
			logger.error("Run BluetoothServerThread Error", ex);
			stopServer();
		}
	}
	
	public void stopServer(){			
		if(serverSocket != null){
			try {
				serverSocket.close();
				serverSocket = null;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

 

SocketThread代码:

class SocketThread implements Runnable{
	private BluetoothSocket socket;
	
	public SocketThread(BluetoothSocket socket){
		this.socket = socket;
	}
	
	@Override
	public void run() {
		BufferedReader reader = null;
		PrintWriter writer = null;
		try{
			reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
			
			while(true){
				String msg = reader.readLine();
				logger.info(msg); 
				
				writer.write("This message from server\r\n");
				writer.flush();
			}
		}catch(Exception ex){
			logger.error("SocketThread Error", ex);
			
			if(socket != null){
				try {
					socket.close();
					socket = null;
				} catch (IOException ex2) {
					logger.error("Close Socket Error", ex2);
				}
			}
		}
	}
}

 

PC 客户端代码:

UUID uuid = new UUID("04c6093b00001000800000805f9b34fb", false);
DiscoveryAgent agent = LocalDevice.getLocalDevice().getDiscoveryAgent();
String connectionURL = agent.selectService(uuid, ServiceRecord.AUTHENTICATE_ENCRYPT, false);

StreamConnection connection = null;
PrintWriter writer = null;
BufferedReader reader = null;
try{
	connection = (StreamConnection)Connector.open(connectionURL);
	reader = new BufferedReader(new InputStreamReader(connection.openInputStream()));
	writer = new PrintWriter(new OutputStreamWriter(connection.openOutputStream()));
	
	writer.write("This message from client\r\n");
	writer.flush();
	
	String data = reader.readLine();
	System.out.println(data);
	
}catch(Exception ex){
	ex.printStackTrace();
}

 

分享到:
评论

相关推荐

    经典蓝牙+ble蓝牙(低功耗蓝牙)客户端\服务端开发

    3. **BluetoothSocket**:负责创建与蓝牙设备的连接,通过它来实现数据的发送和接收。 4. **InputStream/OutputStream**:连接建立后,可以通过这两个流对象进行数据的读写操作。 5. **BroadcastReceiver**:监听...

    C#蓝牙通信(客户端SPP)+串口通信+画图插值处理

    本项目“C#蓝牙通信(客户端SPP)+串口通信+画图插值处理”正是针对这样的需求,提供了一种在Windows桌面应用环境下,通过C#语言实现蓝牙串口通信以及数据处理的方法。 首先,该项目使用了InTheHand.Net.Bluetooth库...

    基于Android的蓝牙远程控制PC系统的设计与实现

    - **客户端**:即Android设备,作为远程控制的发起端,通过蓝牙模块搜索并连接到目标PC。 - **服务器端**:即被控制的PC,需要安装特定的接收服务程序,以处理来自Android设备的指令。 - **蓝牙连接**:Android设备...

    手机蓝牙与PC机通讯

    4. **数据传输**:当手机(客户端)摇晃时,Android设备通过重力感应传感器捕捉到这一动作,并将数据打包成字节流发送给PC。在PC服务端,`inputStream.read(acceptedByteArray)`读取这些字节流,然后转换成可读的...

    蓝牙图片上传pc

    在这个过程中,手机作为客户端,通过蓝牙连接向个人电脑(PC)这个服务器端发送图片数据,最终在PC上进行显示。下面将详细阐述蓝牙通讯的基本原理、蓝牙图片传输的过程以及可能涉及的关键技术。 蓝牙是一种短距离...

    基于蓝牙的PC与Android端通讯DEMO

    1. BlueCove库在PC端作为蓝牙服务端的角色,提供蓝牙连接和数据交换功能。 2. Android的BluetoothAdapter和BluetoothSocket用于客户端的蓝牙设备发现和连接建立。 3. 多线程编程,分别处理服务端的连接监听和客户端...

    基于安卓的蓝牙远程控制PC

    客户端通过蓝牙发送指令到服务器端,服务器端接收并解析这些指令,执行相应的操作,如模拟鼠标移动。 4. **系统实现过程** - **蓝牙连接**:首先,Android客户端需要搜索并连接到已配对的PC蓝牙设备。 - **服务...

    Android 手机蓝牙向向目标设备传输数据(客户端)

    本文将深入探讨如何在Android客户端进行蓝牙通信,以便与硬件设备建立连接并交换数据。 首先,我们需要理解Android蓝牙的基本概念。Android的蓝牙功能基于BluetoothAdapter类,它是所有蓝牙操作的核心。要开始使用...

    java实现windows蓝牙与android设备通信

    关于Android端的实现,通常会使用Android提供的`BluetoothAdapter`和`BluetoothSocket`类来建立客户端,搜索并连接到Windows上的蓝牙服务端,然后同样通过输入/输出流进行通信。在Android的资源列表中,你可以找到...

    android和电脑通过wifi进行文件传输源码

    - **Socket通信**:与PC客户端类似,Android应用也需要使用Socket进行网络通信,可能是通过`java.net.ServerSocket`创建服务器端点,等待PC的连接请求。 - **文件权限管理**:Android应用需要获取必要的文件读写...

    Windows 蓝牙BLE调试工具

    Windows蓝牙BLE调试工具是一款专为开发者和爱好者设计的实用软件,它允许用户在Windows操作系统上进行蓝牙低功耗(Bluetooth Low Energy,简称BLE)设备的调试工作。BLE技术广泛应用于各种物联网设备,如智能手表、...

    winForm下链接蓝牙设备

    本篇文章将详细讲解如何使用C#编程语言在winForm环境下实现客户端主动连接到蓝牙设备的过程。 首先,我们要了解C#中用于蓝牙通信的相关库。Windows提供了一个名为`System.Device.Bluetooth`的命名空间,它包含了一...

    蓝牙串口透传

    串口数据长度和数据本身被组合成一个数据包,再通过蓝牙发送出去。 服务器端则需要正确配置以接收客户端发送的数据,并将其写入相应的特性值中。在实验中,服务器端通过GATT_ReadUsingCharUUID()函数读取特性值的...

    第10章嵌入式Linux综合项目实例.ppt

    * 客户端:Socket网络接收模块、客户端显示模块 基本设计概念: * 服务器端: + 视频采集模块:采用WEBEYE V2000摄像头,编译并加载OV511驱动程序;利用Video4Linux标准视频处理接口进行视频图像的采集;交叉编译...

    BLE蓝牙调试助手,Win10桌面工具,exe

    5. **订阅通知**:在BLE通信中,某些特征值支持订阅功能,一旦其值发生变化,设备会自动发送通知到已订阅的客户端。调试助手提供了订阅/取消订阅的选项,帮助开发者实时监控设备状态变化。 压缩包中的"Release"文件...

    websockt 服务接收

    服务器端可以设置WebSocket服务来处理这些实时通信,PC端应用则作为客户端,通过WebSocket连接发送或接收数据。这样的设计使得数据传输高效且实时,非常适合监控或控制远程设备的场景。 总结来说,WebSocket协议在...

    蓝牙串口通信工具Demo.zip

    开发者可以通过阅读源码了解如何初始化蓝牙适配器,查找和连接设备,建立输入输出流,以及如何处理数据的发送和接收。这对于学习蓝牙通信和Android应用开发具有很高的实践价值。 总结来说,《蓝牙串口通信工具Demo....

    Android Socket编程实例(与PC通信,不同手机中间通信)

    - 使用`Socket`的`getInputStream()`和`getOutputStream()`获取输入流和输出流,分别用于读取客户端发送的数据和向客户端发送数据。 2. **客户端编程**: - 在Android应用中,使用`Socket`类的构造函数建立到...

    蓝牙控制小车

    手机客户端蓝牙,发送字符1代表前进,字符2代表后退,字符3代表加速,字符4代表减速,字符5代表左转,字符6代表右转,发送其他字符无效。双轮小车,1个l298n控制2个直流电机。只有前进的情况下,允许左转和右转。还...

    PC蓝牙通信C#代码实现

    以下代码创建了一个监听蓝牙串口服务(UUID为00001101-0000-1000-8000-00805F9B34FB)的蓝牙监听器,并通过AcceptBluetoothClient方法接收客户端连接: ```csharp BluetoothListener bluetoothListener = new ...

Global site tag (gtag.js) - Google Analytics