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();
}
}
}
다른 자바 FX 애플리케이션에 클라이언트를 생성합니다. 문제는 클라이언트 응용 프로그램을 시작할 때 UI가 표시되지 않는다는 것입니다. 서버 연결을 기다리는 것 같습니다. 서버 응용 프로그램이 곧 시작되면 클라이언트 ui가 나타납니다.이 문제를 해결하는 방법.
"서버에 연결할 때까지 기다려주십시오"라는 메시지와 함께 UI에 Loder 또는 Waiting 이미지를 넣으면 좋지 않습니까? –
서버와의 네트워크 통신을 허용하려면 별도의 스레드를 만들어야합니다. UI의 기본 스레드에서 수행해서는 안됩니다. –
당신은 서버와 클라이언트 부분이 반대로되어있는 것 같습니다. –