클라이언트가 서버의 코어 수를 요청하는 프로그램을 작성하려고합니다.서버/클라이언트 통신이 작동하지 않습니다. java
이클라이언트 :이
public void actionPerformed(ActionEvent e) {
try {
Socket clientSocket = new Socket("128.59.65.200", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String numberOfCores = inFromServer.readLine();clientSocket.close();
System.out.println(numberOfCores);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
서버 : 내가 서버를로드하고 내 GUI의 버튼을 쳤을 때
public static void sendNumberOfCores() {
Thread coresThread = new Thread() {
public void run() {
try {
int numberOfCores;
ServerSocket welcomeSocket = new ServerSocket(6789);
while (true) {
Socket connectionSocket = welcomeSocket.accept();
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
numberOfCores = Runtime.getRuntime().availableProcessors();
outToClient.write(numberOfCores);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
coresThread.setName("Wait for core request thread");
coresThread.start();
}
그러나
는, 클라이언트를 실행하는 다음과 같이 나는이 작업을 수행 코드, 아무 일도 일어나지 않고 단추가 막혔다. 이 원인은 무엇입니까?
감사합니다.
UI 스레드에서 소켓 연결을 실행 중이기 때문입니다. 소켓 용 새 스레드를 만들어야합니다. –
서버 및 클라이언트에 동일한 코드를 배치했습니다. – Robadob
죄송합니다. – user760220