Files
KLALB/src/org/kne/cloud/network/minecraft/SimpleKLALBMinecraftClient.java
T

91 lines
3.3 KiB
Java

package org.kne.cloud.network.minecraft;
import java.io.File;
import java.io.IOException;
import java.net.Inet6Address;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.UnknownHostException;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Scanner;
import org.kne.cloud.network.MultipurposeSocketAddress;
import org.kne.cloud.network.SocketBridge;
import org.kne.cloud.network.SocketListener;
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.ui.KLALBStateGUI2;
import org.kne.util.AutoProperties;
public class SimpleKLALBMinecraftClient {
public static KLALBStateGUI2 ksg;
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println(CONST.klalb+" V"+CONST.klalbver);
Scanner scn=new Scanner(System.in);
Properties def=new Properties();
def.setProperty("server", "");
def.setProperty("local", "");
AutoProperties ap=new AutoProperties(new File("klalbclient.ini"),def);
KLALBController kc=new KLALBController();
kc.registerToProxyTypeAs("KLALB");
MinecraftServerAddress msa=MinecraftServerAddress.findAddress(ap.getProperty("server"));
MinecraftServerPinger msp=new MinecraftServerPinger(msa);
if(msp.getKlalbversion()==null) {
System.out.println("服务器不支持加速!!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.exit(0);
}
Inet6Address vad= kc.getRemoteVaddrBySocketAddress(msa);
MultipurposeSocketAddress vmsa=new MultipurposeSocketAddress("KLALB_Stream",new InetSocketAddress(vad, msp.getKlalbvport()));
System.out.println("连接成功:"+ap.getProperty("server"));
new SocketToSocketProxy(new MultipurposeSocketAddress(ap.getProperty("local")), vmsa);
//System.out.println("提示:输入state并回车可以查看当前线路状态");
while(true) {
String s=scn.nextLine();
switch(s) {
case "help":
System.out.print("help:查看命令使用说明");
System.out.print("state:查看线路状态");
//System.out.println("reload:重新加载线路配置文件");
System.out.println("reconnect:所有离线线路跳过重连等待时间立即尝试重连");
System.out.println("monitor:显示监视器图形界面");
System.out.println("stop:退出程序");
break;
case "stop":
System.exit(0);
break;
case "state":
System.out.println("状态\t可靠性\t上传流量\t下载流量\t上传速度\t下载速度\t上传延迟\t下载延迟\t上传抖动\t下载抖动");
synchronized (kc.getLines()) {
for (Iterator<KLALBRemoteLine> iterator = kc.getLines().iterator(); iterator.hasNext();) {
KLALBRemoteLine hostPort = iterator.next();
System.out.println(hostPort .toString());
//System.out.println();
}
}
break;
case "monitor":
if(ksg==null)
ksg=new KLALBStateGUI2(kc);
ksg.setVisible(true);
break;
case "reconnect":
kc.reconnectImmediately();
break;
default :
System.out.println("未知命令,请输入help以查询命令说明");
}
}
}
}