我正在尝试在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();
}
}
我想先读一下留言
我怀疑问题在于从缓冲区读取会改变缓冲区的读取索引。当您将缓冲区写入通道时,读取索引位于数据的末尾。有几个选择
有关详细信息,请参阅ChannelBuffer(Netty 3)。
下面是netty3和netty4的聊天应用程序示例。
此外,对于聊天客户机,您似乎正在使用服务器端类:NioServerSocketChannelFactory
。我想您需要NioClientSocketChannelFactory
。
我有一个基于UDP网络的服务器。它有一个流水线,我在其中重写方法。 我需要时不时地写些信息。我只能通过使用中的套接字信息和中的通道来实现。为了能够重用这些信息,我保留在一个静态映射中。 我做错什么了吗? 有没有比将通道和远程地址保留在某个成员中更好的回写方法?
我已经阅读了netty代理服务器示例。但是,我想知道如何实现一个与代理对话的客户端。我正在实现的解决方案是服务器,每当客户端连接到服务器时,它都需要连接到套接字服务器。因此,连接到服务器的每个客户端都能够从另一台服务器发送/接收数据。 我需要帮助用netty实现这样的体系结构,因为服务器端是在netty上构建的。
我试图建立一个通用服务器总是在连接的客户端。 该体系结构由4个主要组件组成 有状态应用服务器 无状态网关服务器 客户排队 系统和经纪人 工艺流程 客户端连接到网关 我正在使用JavaNetty作为网关。appserver也是用Java编写的。 我很想说这个设计像Mongrel2,但我不能完全确定。我想说,这更符合城市飞艇氦边缘服务器的设计(http://urbanairship.com/blog/
我希望netty服务器A在启动时连接netty服务器B,听起来像代理,所以我尝试了netty代理示例,但它只是在中启动netty客户端,只有一个新的连接处于活动状态,客户端才会被创建。当服务器A启动时,我需要通知服务器B做一些“注册”的事情,我该怎么办?
主要内容:编写时间客户端本教程中实现的协议是TIME协议。 它与先前的示例不同,时间服务器只发送包含位整数的消息,而不接收任何请求,并在消息发送后关闭连接。 在本示例中,您将学习如何构造和发送消息,以及在完成时关闭连接。 因为时间服务器将忽略任何接收到的数据,但是一旦建立连接就发送消息,所以我们不能使用方法。而是覆盖方法。 以下是代码的实现: 下面我们来看看上面代码的一些解释分析: 如上所述,当建立连接并准备好生成流量时
Netty服务器,Fedora。我只是无法从远程主机连接到服务器,并且通过util没有显示监听套接字。但是我可以在同一台机器上建立运行客户端和服务器的连接。就像这样: 我已尝试仅使用端口、localhost IP、0.0.0.0 IP和网络IP初始化