在JavaFX应用程序中保持ServerSocket活动

在JavaFX应用程序中保持ServerSocket活动,java,javafx,java-8,javafx-8,Java,Javafx,Java 8,Javafx 8,我有两个JavaFX应用程序,一个扮演客户机角色,我可以从它向另一个代表服务器的应用程序发送消息,为此我使用Socket和ServerSocket实现,现在我可以从客户端发送一条消息,然后在服务器端成功接收,之后连接将关闭,那么我如何保持它的活动状态并发送多条消息呢 Client.java 公共类客户端扩展应用程序{ @凌驾 公共无效开始(阶段primaryStage){ 标签CONNLABLE=新标签(“未连接”); TextArea message=新建TextArea(); message

我有两个
JavaFX
应用程序,一个扮演客户机角色,我可以从它向另一个代表服务器的应用程序发送消息,为此我使用
Socket
ServerSocket
实现,现在我可以从客户端发送一条消息,然后在服务器端成功接收,之后连接将关闭,那么我如何保持它的活动状态并发送多条消息呢

Client.java

公共类客户端扩展应用程序{
@凌驾
公共无效开始(阶段primaryStage){
标签CONNLABLE=新标签(“未连接”);
TextArea message=新建TextArea();
message.setPrompText(“在此处键入您的消息…”);
按钮btn=新按钮();
btn.setText(“发送”);
btn.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
试一试{
插座c=新插座(“127.0.0.1”,2004年);
connlab.setText(“已连接”);
ObjectOutputStream out=新的ObjectOutputStream(c.getOutputStream());
writeObject(message.getText());
c、 close();
out.close();
}捕获(例外e){
e、 printStackTrace();
}
}
});
VBox root=新的VBox();
根起搏(10);
根部设置对齐(位置中心);
根。设置填充(新插图(25));
root.getChildren().addAll(消息,btn);
场景=新场景(root,600600);
primaryStage.setTitle(“客户”);
初级阶段。场景(场景);
primaryStage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}
Server.java

公共类服务器扩展应用程序{
@凌驾
公共无效开始(阶段primaryStage){
VBox root=新的VBox();
Label msgRecu=新标签();
根起搏(10);
根。设置填充(新插图(25));
根部设置对齐(位置中心);
root.getChildren().addAll(msgRecu);
场景=新场景(root,600600);
试一试{
ServerSocket s=新的ServerSocket(2004年);
System.out.println(“等待”);
插座连接;
字符串ch=null;
连接=s.accept();
系统输出打印项次(“接受”);
ObjectInputStream in=新的ObjectInputStream(connection.getInputStream());
.readObject()中的ch=(字符串);
msgRecu.setText(ch);
primaryStage.setTitle(“服务器”);
初级阶段。场景(场景);
primaryStage.show();
s、 close();
connection.close();
in.close();
}捕获(例外e){
e、 printStackTrace();
}
}
公共静态void main(字符串[]args){
发射(args);
}
}

您需要一个单独的服务器套接字线程。请解释一下,好吗?不要在处理程序中创建并关闭套接字!