我想用蓝牙通信实现名片交换,现在先试验将名片中的名字(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类型的东西呢?
我是用蓝牙,那段建立socket的代码没有贴出来,socket建立已经成功了。在贴出的这段代码中,将建立好的socket传入客户端线程和服务器线程中。
public ClientThread(BluetoothSocket socket , String exchange_name)
public ServerThread(BluetoothSocket socket)
不知道我说清楚没……