我有一个JavaFX应用程序读取数字的输入,然后将其发送到服务器。服务器计算其数字的总和,然后将结果返回给应用程序。我使用任务类为了不改变应用程序的主线程。发送JavaFX中的字符串服务器不工作
应用
calculate.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Task<String> task = new Task<String>() {
String result_from_server;
@Override
protected String call() throws Exception {
try(Socket socket = new Socket("localhost",PORT);
PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))){
warning.setText("");
result.setText("");
if(!input.getText().equalsIgnoreCase("")){
out.print(input.getText());
result_from_server = in.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
return result_from_server;
}
};
task.setOnSucceeded(event1 -> {
result.setText(task.getValue());
});
new Thread(task).start();
}
});
服务器
public class QuersummeServer{
static final int PORT = 4444;
public static void main(String[] args){
try(ServerSocket ss = new ServerSocket(PORT);
Socket cs = ss.accept();
PrintWriter out = new PrintWriter(cs.getOutputStream(),true);
BufferedReader in = new BufferedReader(new InputStreamReader(cs.getInputStream()))){
String number = in.readLine();
int result = calculate(number);
out.print(result);
}catch (IOException e){
e.printStackTrace();
}
}
private static int calculate(String number) {
int result = 0;
for(int i = 0;i<number.length();i++){
result+= Integer.valueOf(number.substring(i,i+1));
}
return result;
}}
的代码在最后不了了之的地区发生,有什么不好? 在此先感谢
编辑:我想通了,服务器块in.readLine()
之后,但我不知道为什么
你是什么意思没有任何反应,是你得到错误? – aleb2000
没有错误,我发现服务器在in.readLine()之后被阻塞,但我不知道为什么。 –
服务器或客户端中的'in.readLine()'? – aleb2000