0
嗨,我在使用javafx应用程序套接字时遇到了麻烦。javafx之间的套接字通信
客户机代码
@FXML
private void onSetupGameClick() {
try{
Socket s=new Socket("localhost",6666);
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
dout.writeUTF("Hello Server");
dout.flush();
dout.close();
s.close();
}catch(Exception e){
System.out.println(e);
}
}
上面的代码启动套接字服务器时按钮点击。
服务器代码
@Component
public class WelcomeController implements BootInitializable {
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
try {
ServerSocket ss=new ServerSocket(6666);
Socket s=ss.accept();//establishes connection
DataInputStream dis=new DataInputStream(s.getInputStream());
String str=(String)dis.readUTF();
System.out.println("message= "+str);
lblGame.setText(str);
ss.close();
System.out.println("Connection created");
} catch (Exception e) {
e.printStackTrace();
}
}
}
上面的代码将创建其他JavaFX应用程序客户端。 问题是,当客户端应用程序启动时它不会显示UI,我认为它会等待服务器连接。当服务器应用程序尽快启动时,客户端用户界面将显示出来。如何解决此问题。
如果您在显示消息“请等待服务器连接”的UI上放置Loder或Waiting图像,这不是一件好事吗? –
您应该创建一个单独的线程以允许来自服务器的网络通信,您不应该在UI的主线程中执行此操作! –
你似乎有反转的服务器和客户端部分。 –