gpt4 book ai didi

java - Netty 服务器事件

转载 作者:行者123 更新时间:2023-12-01 14:38:20 25 4
gpt4 key购买 nike

我正在尝试在 Netty 中实现基本的多客户端聊天,但我陷入了困境!代码是:

public class Server {

public static void main(String[] args) throws Exception {
ChannelFactory factory =
new NioServerSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool());

ServerBootstrap bootstrap = new ServerBootstrap(factory);

bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
public ChannelPipeline getPipeline() {
return Channels.pipeline(new ServerHandler());
}
});

bootstrap.setOption("child.tcpNoDelay", true);
bootstrap.setOption("child.keepAlive", true);

bootstrap.bind(new InetSocketAddress(8888));
}

}

public class ServerHandler extends SimpleChannelHandler {

@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
ChannelBuffer buf = (ChannelBuffer) e.getMessage();
Channel ch=e.getChannel();
while(buf.readable()) {
System.out.println((char) buf.readByte());
System.out.flush();
}
ch.write(e.getMessage());
}

@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {
e.getCause().printStackTrace();

Channel ch = e.getChannel();
ch.close();
}

}

我想先阅读消息然后发送/处理它!但是当我第一次读取然后处理消息时,messageReceived Event 中的代码不起作用,但如果我先发送然后从 channel 缓冲区读取,它的工作正常。无论如何,我是否首先读取并执行一些长时间操作,然后在完成该处理后,我将响应发送回客户端。我是一个 Java 新手,请引导我正确的方向,我也阅读了文档和一些教程,但我仍然想知道!

最佳答案

这是 netty3 的聊天应用程序示例和 netty4 .

此外,对于聊天客户端,您似乎正在使用服务器端类:NioServerSocketChannelFactory。我认为你需要 NioClientSocketChannelFactory

关于java - Netty 服务器事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16257799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com