io.jpower.kcp.example.rtt.KcpRttClient Maven / Gradle / Ivy
package io.jpower.kcp.example.rtt;
import io.jpower.kcp.netty.ChannelOptionHelper;
import io.jpower.kcp.netty.UkcpChannel;
import io.jpower.kcp.netty.UkcpChannelOption;
import io.jpower.kcp.netty.UkcpClientChannel;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
/**
* Measures RTT(Round-trip time) for KCP.
*
* Sends a message to server and receive a response from server to measure RTT.
*
* @author szh
*/
public class KcpRttClient {
static final int CONV = Integer.parseInt(System.getProperty("conv", "10"));
static final String HOST = System.getProperty("host", "127.0.0.1");
static final int PORT = Integer.parseInt(System.getProperty("port", "8009"));
static final int SIZE = Integer.parseInt(System.getProperty("size", "200"));
static final int COUNT = Integer.parseInt(System.getProperty("count", "3000"));
static final int RTT_INTERVAL = Integer.parseInt(System.getProperty("rttInterval", "20"));
public static void main(String[] args) throws Exception {
// Configure the client.
EventLoopGroup group = new NioEventLoopGroup();
try {
Bootstrap b = new Bootstrap();
b.group(group)
.channel(UkcpClientChannel.class)
.handler(new ChannelInitializer() {
@Override
public void initChannel(UkcpChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
p.addLast(new KcpRttClientHandler(COUNT));
}
});
ChannelOptionHelper.nodelay(b, true, 20, 2, true)
.option(UkcpChannelOption.UKCP_MTU, 512);
// Start the client.
ChannelFuture f = b.connect(HOST, PORT).sync();
// Wait until the connection is closed.
f.channel().closeFuture().sync();
} finally {
// Shut down the event loop to terminate all threads.
group.shutdownGracefully();
}
}
}