Ich versuche gerade netty zu lernen und nur nichts funktioniert ...): Irgendwie empfängt der Server keine Nachrichten vom Client und ich weiß nicht warum. Bitte denken Sie daran, dass ich nie eine funktionierende Anwendung in netty erstellt habe, so dass ich absolut keine Erfahrung habe. Ich würde mich freuen, wenn mir jemand helfen könnte. Ich poste eine Menge Code und es tut mir leid, aber ich habe keine Ahnung, wie man diese Frage kleiner machen kann.Server empfängt keine Nachricht
Also, das ist mein Code:
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);
}
Das ist mein Klient ist:
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);
}
Und das ist mein Server:
@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);
}
Ich denke, im einige grundlegende Verständnis fehlt und ich habe keine Ahnung, wo ich mit dem Debuggen anfangen soll. Der Code ist ziemlich einfach, so sollte es einfach sein für jedermann vertraut mit netty diese zu beantworten (: Dank @everybody
Konsole:.
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...
Gibt die Kanalzukunft, die Sie von 'writeAndFlush' erhalten, Erfolg an? – Ferrybig
Nein, es gibt false zurück ... aber warum? – NyxMC
Überprüfen Sie die Ursache, rufen Sie '.cause() .printStackTrace()' (on channel future), um es auf die Konsole zu drucken – Ferrybig