소켓 TCP/IP 및 GUI를 사용하는 Java 응용 프로그램이 있습니다. 서버는 항상 연결을 수신하고 클라이언트로부터 메시지를받습니다. 서버가 메시지를 받으면 스윙 양식을 표시합니다. 닫기 버튼을 클릭하면 응용 프로그램이 멈 춥니 다. 서버 소켓은 항상 연결을 청취합니다 (while(true)
루프에 메서드 serverSocket.accept()
넣기). 어떻게 그 문제를 해결할 수 있습니까? 그것은 "을 System.exit을 (호출하는 공용 클래스 tcpserver는 {네트워크 스레드 및 스윙 스레드 문제
ServerSocket server = null;
BufferedReader in;
PrintWriter out;
Socket client = null;
//open serverSocket
public void openServer() {
try {
server = new ServerSocket(1234);
} catch (Exception e) {
e.printStackTrace();
}
}
//accept connection and read data
public void listening() {
try {
while (true) {
client = server.accept();
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
//read data from stream
String s = in.readLine();
System.out.println("String receive: " + s);
new NewJFrame().setVisible(true);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void closeServer() {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
if (client != null) {
client.close();
}
if (server != null) {
server.close();
}
} catch (Exception e) {
}
}
public static void main(String arg[]) {
TCPServer server = new TCPServer();
server.openServer();
server.listening();
server.closeServer();
}
}
가 – Blitzkr1eg
당신은 미국 NewJFrame 코드를 보여줄 수 close 이벤트를 처리하는 코드를 보여주지 전체 응용 프로그램, 배치 확신
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
이 방법 :
하여 교체? 닫기 버튼을 눌렀을 때'System.Exit'을하지 않으실 건가요? 스택 트레이스를 얻었습니까? – GETah
닫기 버튼이 창에 있습니다. 그리고 set : setDefaultCloseOperation (javax.swing.WindowConstants.EXIT_ON_CLOSE); – PhiVH