更新IP获取方式

This commit is contained in:
lichx 2023-12-21 19:40:14 +08:00
parent fc35589202
commit a95bf70560
2 changed files with 88 additions and 18 deletions

View File

@ -7,6 +7,7 @@ import com.qst.dms.service.TransportService;
import java.io.IOException; import java.io.IOException;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket; import java.net.ServerSocket;
import java.net.Socket; import java.net.Socket;
import java.util.ArrayList; import java.util.ArrayList;
@ -15,12 +16,54 @@ public class DmsNetServer {
public static void main(String[] args) { public static void main(String[] args) {
AcceptLogThread acceptLogThread = new AcceptLogThread(10000); AcceptLogThread acceptLogThread = new AcceptLogThread(10000);
AcceptTranThread acceptTranThread = new AcceptTranThread(10001); 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(); acceptLogThread.start();
acceptTranThread.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{ class AcceptLogThread extends Thread{
Socket socket; Socket socket;
ObjectInputStream ois; ObjectInputStream ois;

View File

@ -20,6 +20,7 @@ import javafx.scene.input.MouseEvent;
import javafx.util.Duration; import javafx.util.Duration;
import java.io.IOException; import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.net.*; import java.net.*;
import java.sql.ResultSet; import java.sql.ResultSet;
@ -154,6 +155,7 @@ public class InfoInputFXML {
FadeTransition logSuccess; FadeTransition logSuccess;
private Thread errorThread; private Thread errorThread;
private Thread checkerThread; private Thread checkerThread;
private Thread setIPThread;
private volatile boolean stopRequested = false; private volatile boolean stopRequested = false;
private Image OKImage; private Image OKImage;
private Image errorImage; private Image errorImage;
@ -760,7 +762,13 @@ public class InfoInputFXML {
textField.setStyle("-fx-text-fill: #666"); textField.setStyle("-fx-text-fill: #666");
logUser.setText(loginUser); logUser.setText(loginUser);
logID.setText(""+min_id); logID.setText(""+min_id);
Thread thread = new Thread(()->{
while(setIPThread.isAlive());
Platform.runLater(()->{
logIP.setText(defaultIP); logIP.setText(defaultIP);
});
});
thread.start();
Arrays.fill(textFieldChanged,false); Arrays.fill(textFieldChanged,false);
} }
@ -843,22 +851,23 @@ public class InfoInputFXML {
label.setTextFill(Color.color(1,0,0,0)); label.setTextFill(Color.color(1,0,0,0));
logLabelSuccess.setTextFill(Color.color(0,1,0,0)); logLabelSuccess.setTextFill(Color.color(0,1,0,0));
transportLabelSuccess.setTextFill(Color.color(0,1,0,0)); transportLabelSuccess.setTextFill(Color.color(0,1,0,0));
try { setIP();
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); // try {
while (interfaces.hasMoreElements()) { // Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
NetworkInterface iface = interfaces.nextElement(); // while (interfaces.hasMoreElements()) {
// 过滤回环接口和虚拟接口 // NetworkInterface iface = interfaces.nextElement();
if (iface.isLoopback() || iface.isVirtual() || !iface.isUp()) { // // 过滤回环接口和虚拟接口
continue; // if (iface.isLoopback() || iface.isVirtual() || !iface.isUp()) {
} // continue;
Enumeration<InetAddress> addresses = iface.getInetAddresses(); // }
while (addresses.hasMoreElements()) { // Enumeration<InetAddress> addresses = iface.getInetAddresses();
defaultIP = addresses.nextElement().getHostAddress(); // while (addresses.hasMoreElements()) {
} // defaultIP = addresses.nextElement().getHostAddress();
} // }
} catch (SocketException e) { // }
e.printStackTrace(); // } catch (SocketException e) {
} // e.printStackTrace();
// }
OKImage = new Image("resources/ok.png"); OKImage = new Image("resources/ok.png");
errorImage = new Image("resources/error.png"); errorImage = new Image("resources/error.png");
logImageView = new ImageView(); logImageView = new ImageView();
@ -878,6 +887,24 @@ public class InfoInputFXML {
thread.start(); 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() void setPhotos()
{ {
for(int i=0;i<topButtons.length;i++) for(int i=0;i<topButtons.length;i++)