package org.kne.cloud.network.klalb; import java.io.File; import java.io.IOException; 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.klalb.LineManager.LineEntry; import org.kne.cloud.network.mport.MultipurposeSocketAddress; import org.kne.cloud.network.mport.SocketBridge; import org.kne.cloud.network.mport.TCPListener; import org.kne.util.AutoProperties; public class SimpleKLALBClient { public static void main(String[] args) throws UnknownHostException, IOException { 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(); KLALBRemoteSocket kr=new KLALBRemoteSocket(new MultipurposeSocketAddress(ap.getProperty("server")).connectSocket()); kc.addRemoteSocket(kr); kr.close(); System.out.println("连接成功:"+ap.getProperty("server")); TCPListener tl=new TCPListener(new MultipurposeSocketAddress(ap.getProperty("local"))); tl.setCon((s)->{ KLALBVirtualSocket kvs=null; try { kvs=new KLALBVirtualSocket(kc, kr.getRemoteVaddr(), 23333); new SocketBridge(s, kvs).run(); } catch (IOException e) { e.printStackTrace(); }finally { try { s.close(); } catch (IOException e) { e.printStackTrace(); } if(kvs!=null) try { kvs.close(); } catch (IOException e) { e.printStackTrace(); } } }); tl.open(); System.out.println("提示:输入state并回车可以查看当前线路状态"); while(true) { String s=scn.nextLine(); switch(s) { case "state": System.out.println("状态\t上传流量\t下载流量\t上传速度\t下载速度\t延迟\t抖动"); LineManager le=kc.getLineManager(); for (Iterator> iterator = le.entrySet().iterator(); iterator.hasNext();) { java.util.Map.Entry hostPort = iterator.next(); System.out.println(hostPort.getValue() .toString2()); //System.out.println(); } break; default : System.out.println("未知命令!"); } } } }