2012-11-05 2 views
0

"간단한 클라이언트가 실행 중이며 내 서버에 연결되었지만 연결할 수 없으면 데이터가 다시 수신됩니다. 스레드가 나던 끝내기 위해 뭔가를 반복 루프에 넣어야한다고 생각합니다. 하지만 난 거기에 무엇을 입력해야되는지 잘 모릅니다. 누군가가가의 autoflush로 설정되지 않은 경우안드로이드 TCP 클라이언트가 올바르지 않음

Thread background=new Thread(new Runnable() { 
      public void run() { 

       try { 
         socket = new Socket("255.255.255.255", 9999); 
         dataOutputStream = new DataOutputStream(socket.getOutputStream()); 
         dataInputStream = new DataInputStream(socket.getInputStream()); 
         dataOutputStream.writeUTF("Send this text to the server"); 
         Log.i("Appname", dataInputStream.readUTF()); 

        } catch (someexceptionhere) { 

        } 

      } 
    }); 

답변

0

내가받은 방법을 폐지하고 사용하고 있습니다.

socket.getInputStream().read(incomingdata); 

(10)는 들으에게 지금

0

이 스트림을 플러시해야? 나 좀 도와 또는 나에게 단서를하시기 바랍니다 제공 할 수 있습니다.

Thread background=new Thread(new Runnable() { 
    public void run() { 
    try { 
     socket = new Socket("255.255.255.255", 9999); 
     dataOutputStream = new DataOutputStream(socket.getOutputStream()); 
     dataInputStream = new DataInputStream(socket.getInputStream()); 
     dataOutputStream.writeUTF("Send this text to the server"); 
     dataOutputStream.flush(); 
     Log.i("Appname", dataInputStream.readUTF()); 
    } catch (Exception _) {} 
} 
+1

작동하지 않음 = ( 처음 메시지를 서버에 보낸 직후에 하나의 메시지를받을 수 있지만 클라이언트에 즉시 메시지를 다시 보내는 경우에만 가능합니다. –

0

run() 메소드가 리턴하거나 모든 포인터가 해제 될 때 스레드가 살해를 작동하는 것 같다. 코드를 실행하려면 while 루프를 사용해야하지만 루프에서 Thread.sleep()을 사용하여 스레드가 장치에 과부하를 걸지 않도록해야합니다. 10ms 이상 작동해야하지만, 필요 이상으로 작게 설정하지 마십시오.

관련 문제