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的主線程中執行此操作! –
你似乎有反轉的服務器和客戶端部分。 –