【发布时间】:2015-02-27 15:22:34
【问题描述】:
我正在使用 Netty 构建客户端-服务器网络通信。如果成功,是否可以找出客户端连接到了哪个应用?
这是我尝试解决的以下问题:如果 Tomcat 服务器正在侦听端口 8080,我的客户端应用程序成功连接到“服务器”。看起来 谁 在监听端口并不重要。 如何确定我的服务器应用程序当前是否已启动并侦听端口而不是例如雄猫?
这是客户端的连接代码:
public void run(){
//disconnectTest();
createBootstrap( new Bootstrap(), new NioEventLoopGroup(), true);
}
public void createBootstrap( Bootstrap b, EventLoopGroup eventLoop, boolean initialAttempt){
mWorkerGroup = eventLoop;
try {
b.group(mWorkerGroup)
.channel(NioSocketChannel.class)
.option(ChannelOption.SO_KEEPALIVE, true)
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000)
.handler(new ClientChannelInitializer());
logger.info("Connecting client...");
b.connect(mHost, mPort)
.addListener( new ConnectionListener(this, initialAttempt));
} catch (Exception e) {
logger.error("Failed to connect client to server '" +mHost +": " +mPort +". Error: ", e);
}
}
来自 ConnectionListener 的片段:
public void operationComplete(ChannelFuture future) throws Exception {
if (future.isSuccess()) {
System.out.println("success");
}else{
System.out.println("error");
}
}
【问题讨论】:
-
让你在tomcat上的webapp提供一个带有一些状态信息的url。然后您可以从您的客户端访问此 url 并检查答案。如果它在那个 url 上回答,它接缝是你的 webapp,如果内容是预期的,它就是 webapp。
标签: java network-programming port netty