我想用蓝牙通信实现名片交换,现在先试验将名片中的名字(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类型的东西呢?

解决方案 »

  1.   


    我是用蓝牙,那段建立socket的代码没有贴出来,socket建立已经成功了。在贴出的这段代码中,将建立好的socket传入客户端线程和服务器线程中。
     public ClientThread(BluetoothSocket socket , String exchange_name)
     public ServerThread(BluetoothSocket socket)
    不知道我说清楚没……
      

  2.   

    flush 试试,可能太小了吧
      

  3.   

    你不是打印的读得字节数吗?都没打印?Catch IO异常那里打印下异常 看会不会有IO异常