Я хотел бы создать TCP-клиент, который получает ответ без закрытия канала.Я использую Netty и ссылаюсь на пример эха здесь: "https://netty.io/4.1/xref/io/netty/example/echo/EchoClient.html".
Кажется, что каждый пример клиента TCP Netty имеет следующий код.
f.channel().closeFuture().sync();
Это ждет, пока канал не будет закрыт.пытаюсь создать keep-alive, как TCP-соединение, я не хочу, чтобы TCP-клиент и сервер закрывали канал.
Если я не использую приведенный выше код, TCP-клиент завершает свой процесс без ожидания ответаЯ хочу, чтобы TCP-клиент ждал до тех пор, пока не получит ответ, но я не хочу использовать ReadTimeoutHandler, потому что он продолжает ждать, даже когда TCP-клиент уже заканчивает получать ответ.
Есть ли метод, который ожидает до тех пор, пока "channelReadComplete () "вызывается?
f.channel().closeFuture().sync();
Я бы хотел изменить приведенный выше код для ожидания вызова" channelReadComplete () ".
EventLoopGroup group = new NioEventLoopGroup();
try {
Bootstrap b = new Bootstrap();
b.group(group)
.channel(NioSocketChannel.class)
.option(ChannelOption.TCP_NODELAY, true)
.handler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
if (sslCtx != null) {
p.addLast(sslCtx.newHandler(ch.alloc(), HOST, PORT));
}
//p.addLast(new LoggingHandler(LogLevel.INFO));
p.addLast(new EchoClientHandler());
}
});
// Start the client.
System.out.println("CLIENT - connect");
ChannelFuture f = b.connect(HOST, PORT).sync();
// Wait until the connection is closed.
System.out.println("CLIENT - closeFuture");
f.channel().closeFuture().sync();