2016-11-18 5 views
0

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... 
+0

Gibt die Kanalzukunft, die Sie von 'writeAndFlush' erhalten, Erfolg an? – Ferrybig

+0

Nein, es gibt false zurück ... aber warum? – NyxMC

+0

Überprüfen Sie die Ursache, rufen Sie '.cause() .printStackTrace()' (on channel future), um es auf die Konsole zu drucken – Ferrybig

Antwort

0

Es ist der Fehler, dank Ferrybig Mein Paket war einfach nicht serialisierbar

Verwandte Themen