diff --git a/src/com/qst/dms/net/DmsNetServer.java b/src/com/qst/dms/net/DmsNetServer.java index d2420cc..c627d44 100644 --- a/src/com/qst/dms/net/DmsNetServer.java +++ b/src/com/qst/dms/net/DmsNetServer.java @@ -7,6 +7,7 @@ import com.qst.dms.service.TransportService; import java.io.IOException; import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; @@ -15,12 +16,54 @@ public class DmsNetServer { public static void main(String[] args) { AcceptLogThread acceptLogThread = new AcceptLogThread(10000); AcceptTranThread acceptTranThread = new AcceptTranThread(10001); - System.out.println("Start listening port 10000/10001"); + EchoIPThread echoIPthread = new EchoIPThread(10002); + System.out.println("Start listening port 10000/10001/10002"); acceptLogThread.start(); acceptTranThread.start(); + echoIPthread.start(); } } +class EchoIPThread extends Thread{ + Socket socket; + ObjectInputStream ois; + ServerSocket serverSocket; + LogRecService logRecService; + EchoIPThread(int port){ + logRecService = new LogRecService(); + try{ + serverSocket = new ServerSocket(port); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + @Override + public void run() { + while(this.isAlive()) + { + try{ + socket = serverSocket.accept(); + if(socket!=null) + { + String ip = socket.getInetAddress().getHostAddress(); + ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); + oos.writeObject(ip); + oos.flush(); + oos.close(); + System.out.println("完成一次ip回声"); + } + } catch (IOException e) { + e.printStackTrace(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + } +} class AcceptLogThread extends Thread{ Socket socket; ObjectInputStream ois; diff --git a/src/com/qst/dms/ui/InfoInputFXML.java b/src/com/qst/dms/ui/InfoInputFXML.java index a95976d..0f0f842 100644 --- a/src/com/qst/dms/ui/InfoInputFXML.java +++ b/src/com/qst/dms/ui/InfoInputFXML.java @@ -20,6 +20,7 @@ import javafx.scene.input.MouseEvent; import javafx.util.Duration; import java.io.IOException; +import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.*; import java.sql.ResultSet; @@ -154,6 +155,7 @@ public class InfoInputFXML { FadeTransition logSuccess; private Thread errorThread; private Thread checkerThread; + private Thread setIPThread; private volatile boolean stopRequested = false; private Image OKImage; private Image errorImage; @@ -760,7 +762,13 @@ public class InfoInputFXML { textField.setStyle("-fx-text-fill: #666"); logUser.setText(loginUser); logID.setText(""+min_id); - logIP.setText(defaultIP); + Thread thread = new Thread(()->{ + while(setIPThread.isAlive()); + Platform.runLater(()->{ + logIP.setText(defaultIP); + }); + }); + thread.start(); Arrays.fill(textFieldChanged,false); } @@ -843,22 +851,23 @@ public class InfoInputFXML { label.setTextFill(Color.color(1,0,0,0)); logLabelSuccess.setTextFill(Color.color(0,1,0,0)); transportLabelSuccess.setTextFill(Color.color(0,1,0,0)); - try { - Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); - while (interfaces.hasMoreElements()) { - NetworkInterface iface = interfaces.nextElement(); - // 过滤回环接口和虚拟接口 - if (iface.isLoopback() || iface.isVirtual() || !iface.isUp()) { - continue; - } - Enumeration addresses = iface.getInetAddresses(); - while (addresses.hasMoreElements()) { - defaultIP = addresses.nextElement().getHostAddress(); - } - } - } catch (SocketException e) { - e.printStackTrace(); - } + setIP(); +// try { +// Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); +// while (interfaces.hasMoreElements()) { +// NetworkInterface iface = interfaces.nextElement(); +// // 过滤回环接口和虚拟接口 +// if (iface.isLoopback() || iface.isVirtual() || !iface.isUp()) { +// continue; +// } +// Enumeration addresses = iface.getInetAddresses(); +// while (addresses.hasMoreElements()) { +// defaultIP = addresses.nextElement().getHostAddress(); +// } +// } +// } catch (SocketException e) { +// e.printStackTrace(); +// } OKImage = new Image("resources/ok.png"); errorImage = new Image("resources/error.png"); logImageView = new ImageView(); @@ -878,6 +887,24 @@ public class InfoInputFXML { thread.start(); } + private void setIP() { + setIPThread = new Thread(()->{ + try { + Socket socket = new Socket("116.62.133.59",10002); + String ip = (String) (new ObjectInputStream(socket.getInputStream())).readObject(); + defaultIP = ip; + }catch(ConnectException e) { + ; + } + catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + }); + setIPThread.start(); + } + void setPhotos() { for(int i=0;i