JavaFX无法通过Controller

时间:2016-02-18 14:16:50

标签: java sockets javafx dataoutputstream

我有一个简单的JavaFX应用程序 当我启动应用程序时,它通过Socket建立与服务器的连接,并持续监听来自该服务器的数据。现在我创建了一个应该将dat发送到服务器的Button。

我就这样做了

控制器:

 @FXML
private Button update;


 public void askOnline() throws UnknownHostException, IOException{
Socket socket = new Socket("127.0.0.1", 7000);
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF("AreYouOnline");
  dos.flush();
socket.close();
}

主:

@Override
public void start(Stage primaryStage) throws IOException {
    this.primaryStage = primaryStage;
    this.primaryStage.setTitle("Thypheon Application");
    initRootLayout();
    controller2 = initDesign();
    addBot();
    con = new Connection(controller2);
    Thread t = new Thread(con);
    t.start();

}

主题:

public class Connection implements Runnable {
 String result;
 Controller controller;
 Socket socket;
 DataOutputStream dos;

   public Connection(Controller controller) {
       this.controller = controller;
   }

@Override
public void run() {
   try {
        socket = new Socket("127.0.0.1", 7000);
        System.out.println("Connessooo");
         DataInputStream dis = new DataInputStream(socket.getInputStream());
         dos = new DataOutputStream(socket.getOutputStream());
         SeiOnline so = new SeiOnline(dos);
         Thread t = new Thread(so);
         t.start();

         while(true){
         result = dis.readUTF();
         System.out.println(result);              
           }


         }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

通过这种方式,我在Client和Server之间创建了一个新的Socket连接,只是为了发送数据。但我的问题是:是否可以检索已经存在的Socket连接(在线程中运行)并使用它来向服务器发送数据,而不是创建新的Socket连接?

0 个答案:

没有答案