2017-12-13 2 views
1

외부 입력에서 영원히 데이터 듣기 매초마다 청취하며 데이터를 수신하면 무언가를 할 것입니다. 데이터를 수신하지 못하면 계속해서 데이터를 수신합니다.자바 - 내가 얼마나 u는 외부 입력을들을 경우 유 등이 같이</p> <p>버튼을 클릭하면, texfield 입력과 같은 이벤트를 할 수있는 동안 영원히 부탁드립니다

듣고있는 동안, 나는 위에서 언급 한 것처럼 이벤트를 할 수 있습니다.

죄송합니다.

+0

한 가지 방법은 정확히 외부에 어떤 청취 .. – xs0

+0

을하는 새로운 스레드를 시작하는 것입니다 입력? – xs0

+0

소켓의 데이터 입력 선생님. (데이터 입력 스트림) –

답변

0

스트림에서 읽을 수있는 유일한 방법은 별도의 스레드입니다. 마지막 바이트 읽기와 라벨을 업데이트하기를 원한다면 바보 같은 예를 들어,이 같은 작동 될 수 있습니다

static void startListening(DataInputStream inputStream, JLabel label) { 
    new Thread(() -> { 
     try { 
      while (true) { 
       int i = inputStream.read(); 
       if (i < 0) { 
        updateText(label, "Closed"); 
        break; 
       } else { 
        updateText(label, "Latest byte: " + i); 
       } 
      } 
     } catch (Exception e) { 
      updateText(label, "Error: " + e); 
     } 
    }).start(); 
} 

static void updateText(JLabel label, String text) { 
    SwingUtilities.invokeLater(() -> label.setText(text)); 
} 
+0

대단히 감사합니다. 나는이 코드를 지금 시도 할 것이다. 나는 바로 돌아올 것이다 :) –

+0

다른 클래스에서이 함수를 호출하는 방법 선생님? (필자의 경우, DataOutputStream을 수행하는 Java를 실행하는 다른 노트북에서). –

+0

글쎄, 그냥 다른 랩톱에서 호출 할 수는 없지만 왜 필요하겠습니까? 연결 한 직후에 데이터를 듣기 만하면됩니까? – xs0

관련 문제