2016-12-14 85 views
-1

我有一个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()之后,但我不知道为什么

+1

你是什么意思没有任何反应,是你得到错误? – aleb2000

+0

没有错误,我发现服务器在in.readLine()之后被阻塞,但我不知道为什么。 –

+0

服务器或客户端中的'in.readLine()'? – aleb2000

回答

0

尝试out.print(input.getText());后,客户端类调用out.flush()

+0

已经尝试过,没有工作 –

+0

你有什么样的例外? – Irazza

+0

无,服务器只是等待的串号= in.readLine().. –

相关问题