私はnettyを初めて使用し、nettyフレームワークを使用してチャットサーバーを実装しようとしています.クライアントはコマンドラインからサーバーにメッセージを送信します.サーバーは、キーボードから読み取ることによってメッセージを受信すると、それに応じて応答します.しかし、私のサーバーからの msg がクライアントに到達できません。チャット サーバーの netty フレームワークについて多くの調査を行いましたが、見つかったすべてのオープン ソース コードは基本的にエコー サーバーです。何が問題なのかよくわかりません。その部分を添付しました
clientHandler からのメッセージ受信:
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)throws IOException {
System.out.println("Received message from server: " + e.getMessage());
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
ChannelFuture lastWriteFuture = null;
for(;;){
String sentence;
sentence = inFromUser.readLine();
if (sentence.toLowerCase().equals("shutdown")) {
channel.getCloseFuture().awaitUninterruptibly();
break;
}
lastWriteFuture =channel.write(sentence+ "\r\n");
}
//Wait until all messages are flushed before closing the channel.
if (lastWriteFuture != null) {
lastWriteFuture.awaitUninterruptibly();
}
channel.close().awaitUninterruptibly();
}
serverHandler からのメッセージ受信:
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)throws IOException {
System.out.println("Received message from client: " + e.getMessage());
String msgclient = (String) e.getMessage();
if (msgclient.toLowerCase().equals("bye")) {
e.getChannel().close().awaitUninterruptibly();
shutdown();
}
BufferedReader infromserver =new BufferedReader( new InputStreamReader(System.in));
String serversentence;
serversentence = infromserver.readLine();
System.out.println(serversentence);
Channel c=e.getChannel();
ChannelFuture f =Channels.future(e.getChannel());
ChannelEvent responseEvent = new DownstreamMessageEvent(c, f, serversentence ,c.getRemoteAddress());
ctx.sendDownstream(responseEvent);
System.out.println(channels.size());
System.out.println(responseEvent);
}