2013-06-06 2 views
0

Я пытаюсь создать сервер и клиентское приложение на двух телефонах Android (Nexus 4). Один телефон как клиент и другой как сервер. Но на стороне сервера я получаю ошибку исключения EOF при чтении входящих данных, а на стороне клиента я получаю исключение IO при написании некоторого байта в Socket outputStream. Может кто-нибудь просветить меня, что я делаю неправильно?Исключение IO и EOF при отправке и получении байта на сервер и обратно

стороне клиента Код

 // Send only one byte to server 

    while (!Thread.currentThread().isInterrupted()) { 

     try { 

      Log.d(TAG,"Entering into the IO exception block"); 
      byte[] image_data = new byte[3]; 
      String send_string = new String(image_data); 

      // Create a Output Stream to send the bytes back to server 
      OutputStream out; 

      out = s.getOutputStream(); 
      DataOutputStream dos = new DataOutputStream(out); 
      Log.d(TAG,"Created data output Stream"); 


      dos.writeUTF(send_string); 

      /* 
      dos.writeInt(image_data.length); 
      dos.write(image_data, 0, image_data.length); 
      Log.d(TAG,"Writing the ByteArray into Socket "); 
      */ 

      out.close(); 
      dos.flush(); 
      dos.close(); 
      s.close(); 


     } catch (IOException e1) { 
      Log.d(TAG,"Exception while writing to Socket"); 
      e1.printStackTrace(); 
     } 


    } 

стороне сервера Код: Исключение при dis.readFully (ClientByteArray)

if (s == null) 
       s = ss.accept(); 

      Log.d(TAG,"Socket server is closed " + ss.isClosed() +", Recieved Buffer Size = " + ss.getReceiveBufferSize()); 
      Log.d(TAG,"Accepted Client socket at server"); 

      byte[] ClientByteArray = new byte[ss.getReceiveBufferSize()]; 

      InputStream in; 
      in = s.getInputStream(); 
      DataInputStream dis = new DataInputStream(in); 
    dis.readFully(ClientByteArray); 

      Log.d(TAG,"Data recieved from Client, Bytes = " + ClientByteArray.length); 

ответ

0

Вы пишете с writeUTF(), так что вы должны читать с readUTF().