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に表示すると、「サーバが接続するのをお待ちください」というメッセージが表示されます。 –
サーバーからのネットワーク通信を可能にするために別のスレッドを作成する必要があります。UIのメインスレッドでは実行しないでください。 –
あなたはサーバーとクライアントの部分を逆にしているようです。 –