JavaFX client server socket












0














I'm setting a mail local service and I've built the server interface with JavaFX.



The problem is that when I run the server, it shows the interface but it's blocked and it doesn't work in any way.



It seems like only the graphics doesn't appear, the backend is working. Indeed if I connect the client and do a request, it all works.
Is it maybe a problem of thread?



This is the main:



FXMLLoader loader = new FXMLLoader(getClass().getResource("MainView.fxml"));
Parent root = loader.load();

stage.setTitle("Server Log");
stage.setScene(new Scene(root, 490, 309));
stage.centerOnScreen();
stage.show();


ServerModel m = new ServerModel(); //create Model
ServerController c = loader.getController(); //get controller
c.setModel(m);
m.start(); //the problem is here, if I comment this line It shows the server interface but obviously the backend doesn't work.


The constructor of ServerModel is this:



public ServerModel() {
try {
serversocket = new ServerSocket(5888);
} catch (IOException e) {
Logger.getLogger(ServerModel.class.getName()).log(Level.SEVERE, null, e);
}
}


and this is the start method of the model that attends the client request for socket:



public void start(){
Socket socket = null;
while (!closed){ //server main loop
try{
socket = serversocket.accept();
//... (here there would be threads that communicate with client and set closed to true)
} catch (IOException e) {
e.printStackTrace();
}
}
}









share|improve this question




















  • 2




    Sounds like you're running the server code on the JavaFX Application Thread. This will block the thread from doing any GUI related stuff; hence why you must never block, nor do long-running tasks on, the FX thread. You should run the server code on a background thread.
    – Slaw
    Dec 27 '18 at 16:28












  • @Slaw Ok I got it but I don't know how to do it. Can you show me in this example how to do it? Thanks a lot.
    – Filippo
    Dec 27 '18 at 16:34






  • 1




    These may help: Lesson: Concurrency (Java Tutorials), the java.util.concurrent package, Concurrency in JavaFX (JavaFX Tutorials), and the javafx.concurrent package.
    – Slaw
    Dec 27 '18 at 18:28


















0














I'm setting a mail local service and I've built the server interface with JavaFX.



The problem is that when I run the server, it shows the interface but it's blocked and it doesn't work in any way.



It seems like only the graphics doesn't appear, the backend is working. Indeed if I connect the client and do a request, it all works.
Is it maybe a problem of thread?



This is the main:



FXMLLoader loader = new FXMLLoader(getClass().getResource("MainView.fxml"));
Parent root = loader.load();

stage.setTitle("Server Log");
stage.setScene(new Scene(root, 490, 309));
stage.centerOnScreen();
stage.show();


ServerModel m = new ServerModel(); //create Model
ServerController c = loader.getController(); //get controller
c.setModel(m);
m.start(); //the problem is here, if I comment this line It shows the server interface but obviously the backend doesn't work.


The constructor of ServerModel is this:



public ServerModel() {
try {
serversocket = new ServerSocket(5888);
} catch (IOException e) {
Logger.getLogger(ServerModel.class.getName()).log(Level.SEVERE, null, e);
}
}


and this is the start method of the model that attends the client request for socket:



public void start(){
Socket socket = null;
while (!closed){ //server main loop
try{
socket = serversocket.accept();
//... (here there would be threads that communicate with client and set closed to true)
} catch (IOException e) {
e.printStackTrace();
}
}
}









share|improve this question




















  • 2




    Sounds like you're running the server code on the JavaFX Application Thread. This will block the thread from doing any GUI related stuff; hence why you must never block, nor do long-running tasks on, the FX thread. You should run the server code on a background thread.
    – Slaw
    Dec 27 '18 at 16:28












  • @Slaw Ok I got it but I don't know how to do it. Can you show me in this example how to do it? Thanks a lot.
    – Filippo
    Dec 27 '18 at 16:34






  • 1




    These may help: Lesson: Concurrency (Java Tutorials), the java.util.concurrent package, Concurrency in JavaFX (JavaFX Tutorials), and the javafx.concurrent package.
    – Slaw
    Dec 27 '18 at 18:28
















0












0








0


0





I'm setting a mail local service and I've built the server interface with JavaFX.



The problem is that when I run the server, it shows the interface but it's blocked and it doesn't work in any way.



It seems like only the graphics doesn't appear, the backend is working. Indeed if I connect the client and do a request, it all works.
Is it maybe a problem of thread?



This is the main:



FXMLLoader loader = new FXMLLoader(getClass().getResource("MainView.fxml"));
Parent root = loader.load();

stage.setTitle("Server Log");
stage.setScene(new Scene(root, 490, 309));
stage.centerOnScreen();
stage.show();


ServerModel m = new ServerModel(); //create Model
ServerController c = loader.getController(); //get controller
c.setModel(m);
m.start(); //the problem is here, if I comment this line It shows the server interface but obviously the backend doesn't work.


The constructor of ServerModel is this:



public ServerModel() {
try {
serversocket = new ServerSocket(5888);
} catch (IOException e) {
Logger.getLogger(ServerModel.class.getName()).log(Level.SEVERE, null, e);
}
}


and this is the start method of the model that attends the client request for socket:



public void start(){
Socket socket = null;
while (!closed){ //server main loop
try{
socket = serversocket.accept();
//... (here there would be threads that communicate with client and set closed to true)
} catch (IOException e) {
e.printStackTrace();
}
}
}









share|improve this question















I'm setting a mail local service and I've built the server interface with JavaFX.



The problem is that when I run the server, it shows the interface but it's blocked and it doesn't work in any way.



It seems like only the graphics doesn't appear, the backend is working. Indeed if I connect the client and do a request, it all works.
Is it maybe a problem of thread?



This is the main:



FXMLLoader loader = new FXMLLoader(getClass().getResource("MainView.fxml"));
Parent root = loader.load();

stage.setTitle("Server Log");
stage.setScene(new Scene(root, 490, 309));
stage.centerOnScreen();
stage.show();


ServerModel m = new ServerModel(); //create Model
ServerController c = loader.getController(); //get controller
c.setModel(m);
m.start(); //the problem is here, if I comment this line It shows the server interface but obviously the backend doesn't work.


The constructor of ServerModel is this:



public ServerModel() {
try {
serversocket = new ServerSocket(5888);
} catch (IOException e) {
Logger.getLogger(ServerModel.class.getName()).log(Level.SEVERE, null, e);
}
}


and this is the start method of the model that attends the client request for socket:



public void start(){
Socket socket = null;
while (!closed){ //server main loop
try{
socket = serversocket.accept();
//... (here there would be threads that communicate with client and set closed to true)
} catch (IOException e) {
e.printStackTrace();
}
}
}






java javafx






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 27 '18 at 16:29

























asked Dec 27 '18 at 16:23









Filippo

63




63








  • 2




    Sounds like you're running the server code on the JavaFX Application Thread. This will block the thread from doing any GUI related stuff; hence why you must never block, nor do long-running tasks on, the FX thread. You should run the server code on a background thread.
    – Slaw
    Dec 27 '18 at 16:28












  • @Slaw Ok I got it but I don't know how to do it. Can you show me in this example how to do it? Thanks a lot.
    – Filippo
    Dec 27 '18 at 16:34






  • 1




    These may help: Lesson: Concurrency (Java Tutorials), the java.util.concurrent package, Concurrency in JavaFX (JavaFX Tutorials), and the javafx.concurrent package.
    – Slaw
    Dec 27 '18 at 18:28
















  • 2




    Sounds like you're running the server code on the JavaFX Application Thread. This will block the thread from doing any GUI related stuff; hence why you must never block, nor do long-running tasks on, the FX thread. You should run the server code on a background thread.
    – Slaw
    Dec 27 '18 at 16:28












  • @Slaw Ok I got it but I don't know how to do it. Can you show me in this example how to do it? Thanks a lot.
    – Filippo
    Dec 27 '18 at 16:34






  • 1




    These may help: Lesson: Concurrency (Java Tutorials), the java.util.concurrent package, Concurrency in JavaFX (JavaFX Tutorials), and the javafx.concurrent package.
    – Slaw
    Dec 27 '18 at 18:28










2




2




Sounds like you're running the server code on the JavaFX Application Thread. This will block the thread from doing any GUI related stuff; hence why you must never block, nor do long-running tasks on, the FX thread. You should run the server code on a background thread.
– Slaw
Dec 27 '18 at 16:28






Sounds like you're running the server code on the JavaFX Application Thread. This will block the thread from doing any GUI related stuff; hence why you must never block, nor do long-running tasks on, the FX thread. You should run the server code on a background thread.
– Slaw
Dec 27 '18 at 16:28














@Slaw Ok I got it but I don't know how to do it. Can you show me in this example how to do it? Thanks a lot.
– Filippo
Dec 27 '18 at 16:34




@Slaw Ok I got it but I don't know how to do it. Can you show me in this example how to do it? Thanks a lot.
– Filippo
Dec 27 '18 at 16:34




1




1




These may help: Lesson: Concurrency (Java Tutorials), the java.util.concurrent package, Concurrency in JavaFX (JavaFX Tutorials), and the javafx.concurrent package.
– Slaw
Dec 27 '18 at 18:28






These may help: Lesson: Concurrency (Java Tutorials), the java.util.concurrent package, Concurrency in JavaFX (JavaFX Tutorials), and the javafx.concurrent package.
– Slaw
Dec 27 '18 at 18:28



















active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53947989%2fjavafx-client-server-socket%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53947989%2fjavafx-client-server-socket%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Monofisismo

Angular Downloading a file using contenturl with Basic Authentication

Olmecas