1
我正在編寫一個程序,其中客戶端請求服務器的核心數。我這樣做如下:服務器/客戶端通信不工作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();
}
}
});
服務器:
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();
}
然而,當我加載服務器和打在我的GUI按鈕運行於客戶端代碼,沒有任何反應,按鈕只是卡住了。這是什麼造成的?
謝謝。
這是因爲你正在UI線程中運行Socket連接。您將需要爲套接字創建一個新的線程。 –
您已經爲服務器和客戶端放置了相同的代碼。 – Robadob
對不起,我更新了它。 – user760220