forked from KNEMC/KLALB
优化代码,性能暴涨
This commit is contained in:
@@ -7,6 +7,7 @@ import java.util.function.BiConsumer;
|
||||
import org.kne.cloud.network.MultipurposeSocketAddress;
|
||||
import org.kne.cloud.network.scanner.InetAddressRange;
|
||||
import org.kne.cloud.network.scanner.PortRange;
|
||||
import org.kne.cloud.network.scanner.ScanRange;
|
||||
import org.kne.cloud.network.scanner.TCPNetworkScanner;
|
||||
|
||||
public class MinecraftScanner extends TCPNetworkScanner{
|
||||
@@ -19,7 +20,7 @@ public class MinecraftScanner extends TCPNetworkScanner{
|
||||
public void setMinecraftConsumer(BiConsumer<MultipurposeSocketAddress, MinecraftServerPinger> minecraftConsumer) {
|
||||
this.minecraftConsumer = minecraftConsumer;
|
||||
}
|
||||
public MinecraftScanner() {
|
||||
{
|
||||
super.setConsumer((mpsa,s)->{
|
||||
if(s!=null) {
|
||||
try {
|
||||
@@ -28,9 +29,13 @@ public class MinecraftScanner extends TCPNetworkScanner{
|
||||
minecraftConsumer.accept(mpsa, msp);
|
||||
}
|
||||
} catch (UnknownHostException e) {
|
||||
e.printStackTrace();
|
||||
if(minecraftConsumer!=null) {
|
||||
minecraftConsumer.accept(mpsa, null);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
if(minecraftConsumer!=null) {
|
||||
minecraftConsumer.accept(mpsa, null);
|
||||
}
|
||||
}
|
||||
}else {
|
||||
if(minecraftConsumer!=null) {
|
||||
@@ -39,35 +44,20 @@ public class MinecraftScanner extends TCPNetworkScanner{
|
||||
}
|
||||
});
|
||||
}
|
||||
public MinecraftScanner() {
|
||||
|
||||
}
|
||||
|
||||
public MinecraftScanner(int connectTimeout, int soTimeout) {
|
||||
super(connectTimeout, soTimeout);
|
||||
super.setConsumer((mpsa,s)->{
|
||||
if(s!=null) {
|
||||
try {
|
||||
MinecraftServerPinger msp=new MinecraftServerPinger(mpsa,s);
|
||||
if(minecraftConsumer!=null) {
|
||||
minecraftConsumer.accept(mpsa, msp);
|
||||
}
|
||||
} catch (UnknownHostException e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}else {
|
||||
if(minecraftConsumer!=null) {
|
||||
minecraftConsumer.accept(mpsa, null);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws UnknownHostException {
|
||||
MinecraftScanner tcn = new MinecraftScanner();
|
||||
tcn.getPortRanges().add(new PortRange(25565));
|
||||
tcn.getPortRanges().add(new PortRange(34000, 37000));
|
||||
tcn.getAddressRanges().add(new InetAddressRange("192.168.0.1","192.168.0.255"));
|
||||
tcn.getRanges().add(new ScanRange(new InetAddressRange("127.0.0.1","127.0.0.2"),new PortRange(25565,37000)));
|
||||
tcn.setMinecraftConsumer((mpsa,mc)->{
|
||||
if(mc!=null)
|
||||
System.out.println(mc);
|
||||
});
|
||||
tcn.setProcessConsumer((f)->{//System.out.println(f);
|
||||
|
||||
@@ -3,8 +3,11 @@ package org.kne.cloud.network.minecraft;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.EOFException;
|
||||
import java.io.Externalizable;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.ObjectInput;
|
||||
import java.io.ObjectOutput;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Serializable;
|
||||
import java.io.StringReader;
|
||||
@@ -37,7 +40,7 @@ public class MinecraftServerPinger implements Serializable{
|
||||
|
||||
private long latency=-1;
|
||||
private String json;
|
||||
private BufferedImage icon;
|
||||
//private BufferedImage icon;
|
||||
private int max;
|
||||
private int online;
|
||||
private String description;
|
||||
@@ -47,6 +50,8 @@ public class MinecraftServerPinger implements Serializable{
|
||||
private String klalbversion;
|
||||
private Inet6Address klalbvaddr;
|
||||
private int klalbvport;
|
||||
private String icon;
|
||||
private transient BufferedImage image;
|
||||
|
||||
public MinecraftServerPinger(MultipurposeSocketAddress target) throws UnknownHostException, IOException {
|
||||
this(target,target.connectSocket());
|
||||
@@ -146,12 +151,8 @@ public class MinecraftServerPinger implements Serializable{
|
||||
if(favicon!=null) {
|
||||
String s=favicon.getAsString();
|
||||
if(s.startsWith("data:image/png;base64,")){
|
||||
s=s.replace("\n", "");
|
||||
try {
|
||||
icon=ImageIO.read(new ByteArrayInputStream(Base64.getDecoder().decode(s.substring("data:image/png;base64,".length()))));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
icon=s.replace("\n", "");
|
||||
|
||||
}
|
||||
}
|
||||
/*try {
|
||||
@@ -261,7 +262,15 @@ public class MinecraftServerPinger implements Serializable{
|
||||
}
|
||||
|
||||
public BufferedImage getIcon() {
|
||||
return icon;
|
||||
if(icon==null)
|
||||
return null;
|
||||
if(image==null)
|
||||
try {
|
||||
image= ImageIO.read(new ByteArrayInputStream(Base64.getDecoder().decode(icon.substring("data:image/png;base64,".length()))));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
public int getMax() {
|
||||
@@ -305,4 +314,6 @@ public class MinecraftServerPinger implements Serializable{
|
||||
MinecraftServerPinger sp=new MinecraftServerPinger(MinecraftServerAddress.findAddress("mc.hypixel.cn"));
|
||||
System.out.println(sp);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package org.kne.cloud.network.minecraft;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import org.kne.cloud.network.MultipurposeSocketAddress;
|
||||
import org.kne.cloud.network.scanner.InetAddressRange;
|
||||
import org.kne.cloud.network.scanner.PortRange;
|
||||
import org.kne.cloud.network.scanner.ScanRange;
|
||||
|
||||
public class MinecraftServerScanRange extends ScanRange {
|
||||
|
||||
public MinecraftServerScanRange(InetAddressRange addressRange, PortRange portRange) {
|
||||
super(addressRange, portRange);
|
||||
}
|
||||
|
||||
public MinecraftServerScanRange(MultipurposeSocketAddress begin, MultipurposeSocketAddress end)
|
||||
throws UnknownHostException {
|
||||
super(begin, end);
|
||||
}
|
||||
|
||||
public MinecraftServerScanRange(String range) throws UnknownHostException {
|
||||
super(range);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setMsaString(String range) throws UnknownHostException {
|
||||
String[]sp=range.split("~");
|
||||
MultipurposeSocketAddress begin=MinecraftServerAddress.findAddress (sp[0]);
|
||||
MultipurposeSocketAddress end;
|
||||
if(sp.length>1) {
|
||||
end=MinecraftServerAddress.findAddress (sp[1]);
|
||||
}else {
|
||||
end=MinecraftServerAddress.findAddress (sp[0]);
|
||||
}
|
||||
setMsa(begin, end);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -18,7 +18,7 @@ import org.kne.cloud.network.SocketToSocketProxy;
|
||||
import org.kne.cloud.network.klalb.CONST;
|
||||
import org.kne.cloud.network.klalb.KLALBController;
|
||||
import org.kne.cloud.network.klalb.KLALBRemoteLine;
|
||||
import org.kne.cloud.network.klalb.KLALBStateGUI2;
|
||||
import org.kne.cloud.network.klalb.ui.KLALBStateGUI2;
|
||||
import org.kne.util.AutoProperties;
|
||||
|
||||
public class SimpleKLALBMinecraftClient {
|
||||
|
||||
Reference in New Issue
Block a user