Files
KLALB/src/org/kne/cloud/network/klalb/SimpleKLALBClient.java
T
Administrator 585b7c5fe6 KLALB大更新
新负载均衡算法
2023-07-02 13:20:11 +08:00

74 lines
2.3 KiB
Java

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<java.util.Map.Entry<MultipurposeSocketAddress, LineEntry>> iterator = le.entrySet().iterator(); iterator.hasNext();) {
java.util.Map.Entry<MultipurposeSocketAddress, LineEntry> hostPort = iterator.next();
System.out.println(hostPort.getValue() .toString2());
//System.out.println();
}
break;
default :
System.out.println("未知命令!");
}
}
}
}