我有一个简单的JavaFX应用程序 当我启动应用程序时,它通过Socket建立与服务器的连接,并持续监听来自该服务器的数据。现在我创建了一个应该将dat发送到服务器的Button。
我就这样做了
控制器:
@FXML
private Button update;
public void askOnline() throws UnknownHostException, IOException{
Socket socket = new Socket("127.0.0.1", 7000);
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF("AreYouOnline");
dos.flush();
socket.close();
}
主:
@Override
public void start(Stage primaryStage) throws IOException {
this.primaryStage = primaryStage;
this.primaryStage.setTitle("Thypheon Application");
initRootLayout();
controller2 = initDesign();
addBot();
con = new Connection(controller2);
Thread t = new Thread(con);
t.start();
}
主题:
public class Connection implements Runnable {
String result;
Controller controller;
Socket socket;
DataOutputStream dos;
public Connection(Controller controller) {
this.controller = controller;
}
@Override
public void run() {
try {
socket = new Socket("127.0.0.1", 7000);
System.out.println("Connessooo");
DataInputStream dis = new DataInputStream(socket.getInputStream());
dos = new DataOutputStream(socket.getOutputStream());
SeiOnline so = new SeiOnline(dos);
Thread t = new Thread(so);
t.start();
while(true){
result = dis.readUTF();
System.out.println(result);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
通过这种方式,我在Client和Server之间创建了一个新的Socket连接,只是为了发送数据。但我的问题是:是否可以检索已经存在的Socket连接(在线程中运行)并使用它来向服务器发送数据,而不是创建新的Socket连接?