【问题标题】:JavaFX application not responding when found ServerSocket.accept() methodJavaFX 应用程序在找到 ServerSocket.accept() 方法时没有响应
【发布时间】:2019-04-12 11:08:27
【问题描述】:

我创建了 javafx 应用程序并且必须将它与 ServerSocket 结合起来,但是当我使用 ServerSocket 的函数 accept 时,应用程序会中断。我期望的是让应用程序等到有一个 Socket 连接并运行下一个方法。我不知道会发生什么,但是当我将 ServerSocket.accept() 行注释掉时,它工作得很好。我曾尝试阅读 ServerSocket 的 api 文档,但没有找到任何帮助,或者我对它太无聊了。

主要

package test;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.net.ServerSocket;


public class ProblemTest extends Application {
    public static void main(String[] args) throws Exception{
        launch(args);
    }
    public void start(Stage primaryStage)throws Exception{
        FXMLLoader loader = new FXMLLoader(getClass().getResource("test.fxml"));
        Parent root= loader.load();
        Scene scene=new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();
        ServerSocket server=new ServerSocket(8000);
        server.accept();

    }
}

Fxml 文件:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.VBox?>

<VBox prefHeight="400.0" prefWidth="640.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <MenuBar>
        <menus>
          <Menu mnemonicParsing="false" text="File">
            <items>
                  <MenuItem mnemonicParsing="false" text="Clear" />
              <MenuItem mnemonicParsing="false" text="Close" />
            </items>
          </Menu>
        </menus>
      </MenuBar>
      <TextArea prefHeight="377.0" prefWidth="640.0" />
   </children>
</VBox>
```

【问题讨论】:

    标签: java javafx java-11 javafx-11


    【解决方案1】:
    server.accept()
    

    阻塞应用线程,你需要在另一个线程中调用accept()

    new Thread(() -> {
        ... new ServerSocket(8000).accept();
    }).start()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 2019-08-15
      相关资源
      最近更新 更多