`
raymond.chen
  • 浏览: 1426555 次
  • 性别: 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

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

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

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

    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应用需要获取必要的文件读写...

    winForm下链接蓝牙设备

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

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

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

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

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

    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个直流电机。只有前进的情况下,允许左转和右转。还...

    android PC通信

    - 客户端需要获取到服务端的IP地址和端口号,这可以通过Wi-Fi或蓝牙等方式获取。在同一个路由器下,可以通过本地IP地址进行通信,如果是通过互联网,需要服务端的公网IP。 - 安全性考虑:对于敏感数据传输,建议...

    Android源码——简单通讯源码:手机控制PC的关机、重启、.zip

    在发送请求时,Android应用会构造特定的命令字符串,例如"shutdown"或"restart",并将其作为请求参数或消息内容。 PC端的服务器需要监听对应的端口,接收到请求后解析命令,并执行相应的系统操作。对于Linux系统,...

    android蓝牙通信

    在PC端,通常需要作为客户端来搜索并连接到Android设备。这需要使用第三方库,如.NET框架下的`InTheHand.Net`组件。`InTheHand.Net.Sockets.BluetoothClient`类用于搜索蓝牙设备并建立连接。以下是一个简化的PC端...

    安卓PC遥控器

    【安卓PC遥控器】是一种利用Android设备来控制个人计算机(PC)的应用程序,它通过无线连接,如Wi-Fi或蓝牙,使用户能够远程操作PC。这个应用的核心在于将Android设备转化为一个功能丰富的遥控器,方便用户在不同...

    无线投屏pc端

    首先,软件会捕获并编码PC屏幕上的视频流,然后通过无线网络发送到目标设备,最后在接收设备上解码并显示。为了确保流畅的投屏体验,软件需要处理好延迟、分辨率和帧率等问题,并可能需要优化以适应不同的网络条件。...

Global site tag (gtag.js) - Google Analytics