我想用蓝牙通信实现名片交换,现在先试验将名片中的名字(string类型)通过蓝牙发过去,蓝牙的socket已经建立了,结果发不过去,代码如下客户端:
private class ClientThread extends Thread {
private final BluetoothSocket mmSocket;
private final OutputStream mmOutStream;
private final InputStream mmInStream;
public ClientThread(BluetoothSocket socket , String exchange_name) { System.out.println("进入clientthread,开始write数据流");
mmSocket = socket;
mmOutStream = mmSocket.getOutputStream();
mmInStream = mmSocket.getInputStream(); // 向socket对象所获取的流中发送数据
try {
byte[] send = exchange_name.getBytes();
mmOutStream.write(send); } catch (IOException e) { }
//获取socket对象流中数据,看是否收到了服务器端发来的回馈
byte[] buffer = new byte[1024];
int bytes;
while (true) {
try {
bytes = mmInStream.read(buffer);
System.out.println("client:readbytes:"+bytes);
} catch (IOException e) { }
}
}private class ServerThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream; public ServerThread(BluetoothSocket socket) { System.out.println("进入severthread,开始read数据流");
mmSocket = socket;
mmOutStream = mmSocket.getOutputStream();
mmInStream = mmSocket.getInputStream(); //持续监听,直到接收到客户端发来的数据
byte[] buffer = new byte[1024];
int bytes;
while (true) {
try {
bytes = mmInStream.read(buffer);
System.out.println("server:readbytes: "+bytes);
} catch (IOException e) { }
try {
//服务器回馈一个字符‘o’
mmOutStream.write('o');
} catch (IOException e) { }
}
}运行结果是什么也没收到,是不是read 和write 用错了呢? 到底应该怎么发送一个string类型的东西呢?
private class ClientThread extends Thread {
private final BluetoothSocket mmSocket;
private final OutputStream mmOutStream;
private final InputStream mmInStream;
public ClientThread(BluetoothSocket socket , String exchange_name) { System.out.println("进入clientthread,开始write数据流");
mmSocket = socket;
mmOutStream = mmSocket.getOutputStream();
mmInStream = mmSocket.getInputStream(); // 向socket对象所获取的流中发送数据
try {
byte[] send = exchange_name.getBytes();
mmOutStream.write(send); } catch (IOException e) { }
//获取socket对象流中数据,看是否收到了服务器端发来的回馈
byte[] buffer = new byte[1024];
int bytes;
while (true) {
try {
bytes = mmInStream.read(buffer);
System.out.println("client:readbytes:"+bytes);
} catch (IOException e) { }
}
}private class ServerThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream; public ServerThread(BluetoothSocket socket) { System.out.println("进入severthread,开始read数据流");
mmSocket = socket;
mmOutStream = mmSocket.getOutputStream();
mmInStream = mmSocket.getInputStream(); //持续监听,直到接收到客户端发来的数据
byte[] buffer = new byte[1024];
int bytes;
while (true) {
try {
bytes = mmInStream.read(buffer);
System.out.println("server:readbytes: "+bytes);
} catch (IOException e) { }
try {
//服务器回馈一个字符‘o’
mmOutStream.write('o');
} catch (IOException e) { }
}
}运行结果是什么也没收到,是不是read 和write 用错了呢? 到底应该怎么发送一个string类型的东西呢?
解决方案 »
- 使用纹理贴图后怎么获得图片在屏幕上的实际坐标?
- source not found?
- 请问:使用r12 sdk运行模拟器报错如何解决?qemu: linux kernel too old to load a ram disk
- 关于QQ的一些疑问
- ListView右对齐的问题和setColorFilter问题
- actionbar问题
- 怎么样跳出代码 不执行后面的··
- webview加载网络视频时黑屏,寻找解决办法
- 使用ViewPager 加载两个窗体,如果重新加载
- 移动开发,帮忙看一下我的日志,照片为什么显不出来?
- 继续求助!如何隐藏屏幕下方的菜单栏!
- android 实现心电图样式的曲线(有坐标)
我是用蓝牙,那段建立socket的代码没有贴出来,socket建立已经成功了。在贴出的这段代码中,将建立好的socket传入客户端线程和服务器线程中。
public ClientThread(BluetoothSocket socket , String exchange_name)
public ServerThread(BluetoothSocket socket)
不知道我说清楚没……