im в настоящее время пытается узнать netty и ничего не работает ...): Как-то сервер не получает никаких сообщений от клиента, и я не знаю почему. Пожалуйста, имейте в виду, что я никогда не создаю рабочее приложение в netty, поэтому у меня нет абсолютно никакого опыта. Я был бы рад, если бы кто-нибудь мог мне помочь. Я отправляю много кода и сожалею об этом, но я понятия не имею, как уменьшить этот вопрос.Сервер не получает сообщение
Итак, это мой код:
new Server().run();
Client client = new Client();
client.run();
while(true){
System.out.println("sending message to server...");
client.sendMessage(new PacketPing(System.currentTimeMillis()));
Thread.sleep(1000);
}
Это мой клиент:
private Channel channel;
@Override public void run() {
ChannelFuture future = new Bootstrap().
group(new NioEventLoopGroup()).
channel(NioSocketChannel.class).
handler(new ChannelInitializer<SocketChannel>() {
@Override protected void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast(
new ObjectEncoder(),
new ObjectDecoder(ClassResolvers.cacheDisabled(null)),
new ChannelInboundHandlerAdapter() {
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
System.out.println("client received message!");
}
});
}
}).connect("localhost", 40401);
try {
future.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
this.channel = future.channel();
}
public void sendMessage(Object msg) {
channel.writeAndFlush(msg);
}
И это мой сервер:
@Override public void run() {
new ServerBootstrap().
group(new NioEventLoopGroup(1), new NioEventLoopGroup()).
channel(NioServerSocketChannel.class).
handler(new LoggingHandler(LogLevel.INFO)).
childHandler(new ChannelInitializer<SocketChannel>() {
@Override protected void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast(
new ObjectEncoder(),
new ObjectDecoder(ClassResolvers.cacheDisabled(null)),
new ChannelInboundHandlerAdapter() {
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
System.out.println("server received a message!");
}
});
}
}).bind(40401);
}
Я думаю, что им не хватает какой-то фундаментальное понимание и я не знаю, с чего начать отладку. Код очень прост, так что должно быть легко для всех, знакомы с Нетти, чтобы ответить на это (! Спасибо @everybody
консоли:.
Nov 18, 2016 7:47:58 PM io.netty.handler.logging.LoggingHandler channelRegistered
INFORMATION: [id: 0x52b5b879] REGISTERED
Nov 18, 2016 7:47:58 PM io.netty.handler.logging.LoggingHandler bind
INFORMATION: [id: 0x52b5b879] BIND: 0.0.0.0/0.0.0.0:40401
Nov 18, 2016 7:47:58 PM io.netty.handler.logging.LoggingHandler channelActive
INFORMATION: [id: 0x52b5b879, L:/0:0:0:0:0:0:0:0:40401] ACTIVE
Nov 18, 2016 7:47:58 PM io.netty.handler.logging.LoggingHandler channelRead
INFORMATION: [id: 0x52b5b879, L:/0:0:0:0:0:0:0:0:40401] RECEIVED: [id: 0xdda43b4c, L:/127.0.0.1:40401 - R:/127.0.0.1:56421]
sending message to server...
sending message to server...
sending message to server...
sending message to server...
sending message to server...
sending message to server...
Имеет ли канал будущее, которое вы получаете от 'writeAndFlush', указывает на успех? – Ferrybig
Нет, он возвращает false ... но почему? – NyxMC
Проверьте причину, вызовите' .cause(). printStackTrace() '(на канальное будущее) на нем для печати на консоль – Ferrybig