LanServerPinger.java
net.minecraft.client.server.LanServerPinger
信息
- 全限定名:net.minecraft.client.server.LanServerPinger
- 类型:public class
- 包:net.minecraft.client.server
- 源码路径:src/main/java/net/minecraft/client/server/LanServerPinger.java
- 起始行号:L17
- 继承:Thread
- 职责:
TODO
字段/常量
-
UNIQUE_THREAD_ID- 类型:
AtomicInteger - 修饰符:
private static final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
MULTICAST_GROUP- 类型:
String - 修饰符:
public static final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
PING_PORT- 类型:
int - 修饰符:
public static final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
PING_INTERVAL- 类型:
long - 修饰符:
private static final - 源码定位:
L22 - 说明:
TODO
- 类型:
-
motd- 类型:
String - 修饰符:
private final - 源码定位:
L23 - 说明:
TODO
- 类型:
-
socket- 类型:
DatagramSocket - 修饰符:
private final - 源码定位:
L24 - 说明:
TODO
- 类型:
-
isRunning- 类型:
boolean - 修饰符:
private - 源码定位:
L25 - 说明:
TODO
- 类型:
-
serverAddress- 类型:
String - 修饰符:
private final - 源码定位:
L26 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public LanServerPinger(String motd, String serverAddress) @ L28
- 构造器名:LanServerPinger
- 源码定位:L28
- 修饰符:public
参数:
- motd: String
- serverAddress: String
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void run() @ L37
- 方法名:run
- 源码定位:L37
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void interrupt() @ L59
- 方法名:interrupt
- 源码定位:L59
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public static String createPingString(String motd, String address) @ L65
- 方法名:createPingString
- 源码定位:L65
- 返回类型:String
- 修饰符:public static
参数:
- motd: String
- address: String
说明:
TODO
public static String parseMotd(String pingString) @ L69
- 方法名:parseMotd
- 源码定位:L69
- 返回类型:String
- 修饰符:public static
参数:
- pingString: String
说明:
TODO
public static String parseAddress(String pingString) @ L79
- 方法名:parseAddress
- 源码定位:L79
- 返回类型:String
- 修饰符:public static
参数:
- pingString: String
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class LanServerPinger extends Thread {
private static final AtomicInteger UNIQUE_THREAD_ID = new AtomicInteger(0);
private static final Logger LOGGER = LogUtils.getLogger();
public static final String MULTICAST_GROUP = "224.0.2.60";
public static final int PING_PORT = 4445;
private static final long PING_INTERVAL = 1500L;
private final String motd;
private final DatagramSocket socket;
private boolean isRunning = true;
private final String serverAddress;
public LanServerPinger(String motd, String serverAddress) throws IOException {
super("LanServerPinger #" + UNIQUE_THREAD_ID.incrementAndGet());
this.motd = motd;
this.serverAddress = serverAddress;
this.setDaemon(true);
this.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(LOGGER));
this.socket = new DatagramSocket();
}
@Override
public void run() {
String pingString = createPingString(this.motd, this.serverAddress);
byte[] ping = pingString.getBytes(StandardCharsets.UTF_8);
while (!this.isInterrupted() && this.isRunning) {
try {
InetAddress group = InetAddress.getByName("224.0.2.60");
DatagramPacket packet = new DatagramPacket(ping, ping.length, group, 4445);
this.socket.send(packet);
} catch (IOException var6) {
LOGGER.warn("LanServerPinger: {}", var6.getMessage());
break;
}
try {
sleep(1500L);
} catch (InterruptedException var5) {
}
}
}
@Override
public void interrupt() {
super.interrupt();
this.isRunning = false;
}
public static String createPingString(String motd, String address) {
return "[MOTD]" + motd + "[/MOTD][AD]" + address + "[/AD]";
}
public static String parseMotd(String pingString) {
int startIndex = pingString.indexOf("[MOTD]");
if (startIndex < 0) {
return "missing no";
} else {
int endIndex = pingString.indexOf("[/MOTD]", startIndex + "[MOTD]".length());
return endIndex < startIndex ? "missing no" : pingString.substring(startIndex + "[MOTD]".length(), endIndex);
}
}
public static @Nullable String parseAddress(String pingString) {
int endMotdIndex = pingString.indexOf("[/MOTD]");
if (endMotdIndex < 0) {
return null;
} else {
int secondEndMotdIndex = pingString.indexOf("[/MOTD]", endMotdIndex + "[/MOTD]".length());
if (secondEndMotdIndex >= 0) {
return null;
} else {
int startIndex = pingString.indexOf("[AD]", endMotdIndex + "[/MOTD]".length());
if (startIndex < 0) {
return null;
} else {
int endIndex = pingString.indexOf("[/AD]", startIndex + "[AD]".length());
return endIndex < startIndex ? null : pingString.substring(startIndex + "[AD]".length(), endIndex);
}
}
}
}
}引用的其他类
- DefaultUncaughtExceptionHandler
- 引用位置:
构造调用 - 关联成员:
DefaultUncaughtExceptionHandler()
- 引用位置: