2012-06-06 2 views
2

서버 쪽 응용 프로그램을 만들고 있지만 JTextarea에 텍스트를 추가하려고하면 작동하지 않습니다. 그러나 콘솔에 인쇄됩니다.JTextArea에 추가

serverSocket.accept() 행을 추가 할 때까지 제대로 작동했습니다. 당신이 할 서버 \ n으로 연결

클라이언트에 대한

을 찾고있는 것 같다 주어진 코드에서

try { 
    serverSocket=new ServerSocket(4545); 
    LogOutput.append("Seccessfuly connected\n"); 
    System.out.println("Seccessfuly connected\n");    

    StartButon.setEnabled(false); 

    while(true){ 
     LogOutput.append("waiting for client\n"); 
     System.out.println("waiting for client\n"); 

     serverSocket.accept(); 
     LogOutput.append("Client connected to server\n");    
    } 
} 
catch(Exception e){ 
    LogOutput.append("cannot establish connection : "+ e +"\n"); 
    StartButon.setEnabled(true); 
} 
+0

어디에서 JTextArea를 사용하고 있습니까? – evanwong

답변

4

완전히 스윙 이벤트 스레드 또는 EDT를 차단합니다. 장기 실행 프로세스와 함께 Swing GUI를 작동 시키려면 백그라운드 스레드에 while (true) 블록부터 시작하여 대부분의 코드를 가져옵니다. Concurrency in Swing 자습서를 읽고 이것이 중요한 이유와 SwingWorker 개체로이 문제를 해결하는 방법을 읽어보십시오.

+0

간단하고 명확하며 정확한 답 +1 – mKorbel

4

및 질문 : 여기

내 코드입니다 텍스트 영역에 추가되었습니다. 당신이 serverSocket.accept 말을하면 클라이언트 연결이 도착할 때까지 코드의 다음 줄을 실행하지 않을 일부 클라이언트가없는

serverSocket.accept(); 
LogOutput.append("Client connected to server\n");  

() 지금은, 기다립니다. serverSocket.accept가 메소드를 차단하고 있습니다. 클라이언트 프로그램을 시작하면 서버가 다음 코드 행을 처리하기 시작합니다. 연결에 대한 docs

public Socket accept() throws IOException 

수신 대기에서

이 소켓에 그것을 수용한다. 메서드는 연결될 때까지 차단됩니다.

관련 문제