내 SwingWorker의의 doInBackground()
가 생성 이미 때 ServerSocketChannel을 다시 시작 주어진 연결 신선한 ServerSocketChannel
사용자가 "연결"버튼을 클릭 할 때.처리 클라이언트가 열려
클라이언트가 isAcceptable()
인 경우 SwingWorker
은 SocketChannel
을 OP_READ
으로 등록합니다.
사용자가 "연결 해제"버튼을 클릭하면 SwingWorker
은 ServerSocketChannel
과 selector()
을 닫습니다. 그러나 클라이언트는 아직 열려 있습니다.
문제점 : 사용자가 다시 "연결"을 클릭하면 클라이언트가 여전히 OP_READ
모드이고 ServerSocketChannel
에 의해 새롭게 승인되지 않는다는 것을 제외하면 위의 프로세스가 반복됩니다.
이 문제를 극복 할 방법이 있습니까? ServerSocketChannel
다시 시작해야 클라이언트가 다시 시작해야합니까?
나는 이것에 대해 이해하지 못한다. 왜 서버용 GUI를 작성하고 있습니까? 왜 사용자는 ServerSocket이 생성 될 때 제어 할 수 있습니까? 사용자가 연결 해제 버튼을 클릭하면 반드시 서버 소켓이 아닌 클라이언트 연결을 닫아야합니다. 그런데 왜 다시 사용자가 제어 할 수 있습니까? – EJP
@EJP 왜 서버 소프트웨어의 사용자가 서버를 시작하고 중지해야하는지 알 수없는 이유는 무엇입니까? – Arvanem
@EJP하지만 클라이언트 연결을 종료해야한다는 제안을 게시합니다. – Arvanem