更新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.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;

View File

@ -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);
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<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface iface = interfaces.nextElement();
// 过滤回环接口和虚拟接口
if (iface.isLoopback() || iface.isVirtual() || !iface.isUp()) {
continue;
}
Enumeration<InetAddress> addresses = iface.getInetAddresses();
while (addresses.hasMoreElements()) {
defaultIP = addresses.nextElement().getHostAddress();
}
}
} catch (SocketException e) {
e.printStackTrace();
}
setIP();
// try {
// Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
// while (interfaces.hasMoreElements()) {
// NetworkInterface iface = interfaces.nextElement();
// // 过滤回环接口和虚拟接口
// if (iface.isLoopback() || iface.isVirtual() || !iface.isUp()) {
// continue;
// }
// Enumeration<InetAddress> 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<topButtons.length;i++)