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 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以查询命令说明"); } } } }