Hallo, ich habe ein Problem mit Socket mit Javafx-Anwendung.Socket-Kommunikation zwischen javafx
Client-Code
@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);
}
}
Der obige Code starten Sie den Socket-Server, wenn die Schaltfläche geklickt.
Servercode
@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();
}
}
}
Above Code-Client auf andere JavaFX-Anwendung erstellen. Das Problem ist, wenn die Client-Anwendung gestartet wird, wird es nicht die Benutzeroberfläche anzeigen, ich denke, es wird warten, bis der Server eine Verbindung herstellt. Wenn die Server-Anwendung gestartet wird, sobald der Client angezeigt wird.Wie soll ich dieses Problem lösen?
Ist es nicht gut, wenn Sie wie Loder oder Waiting Bild auf UI mit Display-Meldung "Bitte warten, bis der Server eine Verbindung herstellen"? –
Sie sollten einen separaten Thread erstellen, um die Netzwerkkommunikation vom Server zu ermöglichen. Sie sollten dies nicht im Hauptthread der Benutzeroberfläche tun! –
scheinen die Server- und Client-Teile invers zu sein. –