Java 在Netty中禁用HTTP协议请求?
我正在用Java编写一个游戏服务器,我正在使用Netty 3.6.2。游戏服务器不应接受HTTP请求,因为它们只处理游戏客户端数据(这纯粹是TCP上的字节)。当我加载Chrome时,我下载了一个带有游戏握手包的文件(这是不应该发生的) 我绑定到游戏服务器的端口,如下所示:Java 在Netty中禁用HTTP协议请求?,java,http,netty,Java,Http,Netty,我正在用Java编写一个游戏服务器,我正在使用Netty 3.6.2。游戏服务器不应接受HTTP请求,因为它们只处理游戏客户端数据(这纯粹是TCP上的字节)。当我加载Chrome时,我下载了一个带有游戏握手包的文件(这是不应该发生的) 我绑定到游戏服务器的端口,如下所示: ChannelFactory factory = new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedTh
ChannelFactory factory = new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool());
clientAcceptor = new ServerBootstrap(factory);
clientAcceptor.setOption("child.tcpNoDelay", true);
clientAcceptor.setOption("child.keepAlive", false);
clientAcceptor.setPipelineFactory(() -> Channels.pipeline(new PacketDecoder(), new ClientHandler()));
clientAcceptor.bind(new InetSocketAddress(Configurations.CHANNEL_GAME_PORT));
我在SimpleChannelHandler中处理请求,如下所示
@Override
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) {
// Encryption key code.
Packets.sendHello(ctx.getChannel(), ivRecv, ivSend);
ctx.getChannel().setAttachment(client);
}
如果传入的请求正在使用HTTP协议,我如何进行解密
编辑:我还应该说,它还应该阻止channel connect上的任何FTP、WebSocket等协议(本质上是非游戏协议的任何协议)。如果您对已接受的连接所做的第一件事是发送某些内容,那么您不能期望能够禁用HTTP请求
让客户机在握手时进行第一次发送。让服务器通过接收启动,如果不是正确的初始握手数据包,则关闭连接。HTTP协议在其RFC中有详细描述