자바로 작성된 채팅 응용 프로그램을 만들고 싶습니다.TCP 포트의 양면 통신용 스레딩 소켓 핸들러
한 대의 컴퓨터가 서버를 호스트하고 다른 컴퓨터가 소켓 [TCP 포트]를 시작합니다.
내가 읽은 바로는 코드가 멈추는 것을 의미하는 소켓을 지속적으로 읽는 루프가 있어야합니다.
마우스가 눌렀을 때 'actionperformed'버튼이 있는데, 내가 쓴 정보를 보내기 위해 끊임없이 소켓을 읽는 루프와 함께 작동하는지 알고 싶습니다.
스레드를 사용해야하는 경우 run()
메서드가 무효화되어야하는지 여부를 알고 싶습니다. 스레드를 사용하면 스레드가 새 클래스를 만들고 전체 GUI가 텍스트 영역을 포함하는 하나의 큰 클래스이므로 스레드를 사용해야합니다. 은밀한.
또한 텍스트 영역에 직접 소켓에서 정보를 추출 할 수 있습니까 (텍스트 영역 변수가 "chatOutput
"이라고할까요)?
당신은 채팅 메시지를 입력하기위한 텍스트 영역과 GUI를 가지고 있고, 대화방에 새 메시지를 전송하는 버튼 :
채팅 패널 업데이트가 수행 될 때 정의되지 않은 동작을 방지하기 위해 gui 스레드에서 수행해야합니다. – luke
+1 @luke : 좋은 지적입니다. 편리하게,이 예제에서 볼 수 있듯이'JTextArea'의'append() 메소드는 쓰레드에 안전하다. http://groups.google.com/group/comp.lang.java.help/msg/9f7f86db103f35c9 – trashgod
오, 'u runnable'을 쓰레드 생성에서 쓸 수 있다는 것을 알기 때문에 새로운 클래스를 만들고 runnable을 구현해야한다고 생각했습니다. thx allot :)! – raven