在javafx中向服务器发送字符串不起作用

在javafx中向服务器发送字符串不起作用,java,javafx,Java,Javafx,我有一个JavaFX应用程序,它读取数字输入,然后将其发送到服务器。服务器计算其数字之和,然后将结果返回给应用程序。我使用任务类是为了不改变应用程序的主线程 应用程序的部分代码 calculate.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { Task<String> ta

我有一个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();
        }
    });
calculate.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
任务=新任务(){
来自\u服务器的字符串结果\u;
@凌驾
受保护的字符串调用()引发异常{
try(套接字=新套接字(“本地主机”,端口);
PrintWriter out=新的PrintWriter(socket.getOutputStream(),true);
BufferedReader in=新的BufferedReader(新的InputStreamReader(socket.getInputStream())){
警告.setText(“”);
result.setText(“”);
if(!input.getText().equalsIgnoreCase(“”){
out.print(input.getText());
结果\u from_server=in.readLine();
}
}捕获(IOE异常){
e、 printStackTrace();
}
从_服务器返回结果_;
}
};
task.SetOnSucceed(事件1->{
result.setText(task.getValue());
});
新线程(任务).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;
}}
公共类查询服务器{
静态最终int端口=4444;
公共静态void main(字符串[]args){
try(ServerSocket ss=newserversocket(端口);
套接字cs=ss.accept();
PrintWriter out=新的PrintWriter(cs.getOutputStream(),true);
BufferedReader in=新的BufferedReader(新的InputStreamReader(cs.getInputStream())){
字符串编号=in.readLine();
int结果=计算(数字);
打印(结果);
}捕获(IOE异常){
e、 printStackTrace();
}
}
私有静态整数计算(字符串编号){
int结果=0;

对于(int i=0;i在
out.print(input.getText());
调用
out.flush()

什么是什么意思,没有发生错误吗?没有错误,我发现服务器在in.readLine()之后阻塞,但我不知道原因。
in.readLine()
在服务器或客户机中??在服务器中,客户机在尝试从服务器读取响应后会阻塞,但由于服务器在in.readLine()之后阻塞,因此该响应从未出现。请尝试在客户机中调用
out.flush()
打印数据后的方法。您遇到了什么样的异常?请尝试该方法,改为写入打印,然后刷新仍然没有成功:/n您认为客户端发送数据,或者问题是服务器何时接收?服务器没有接收到任何信息,但我不知道客户端是否正在发送..可能是服务器没有接收或客户机没有发送消息