UdpChannelHandlerServer.java 文件源码

java
阅读 23 收藏 0 点赞 0 评论 0

项目:Mods 作者:
@Override
protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {
    ByteBuf buffer = msg.content();

    int plid = buffer.readShort();
    int seq = buffer.readUnsignedShort();
    int msgid = buffer.readByte();

    if(msgid == (byte)-128) {
        server.outboundTargets.put((short) plid, SocketUtils.socketAddress(msg.sender().getAddress().getHostAddress(),msg.sender().getPort()));
    }
    else {
        EntityPlayerMP player = server.playerList.get((short)plid);
        IMessage message = TF2weapons.network.messages[msgid].newInstance();
        //buffer.discardReadBytes();
        message.fromBytes(buffer);
        IMessageHandler<IMessage, IMessage> handler = TF2weapons.network.handlerList.get(message.getClass());
        if(constr == null) {
            constr =MessageContext.class.getDeclaredConstructor(INetHandler.class, Side.class);
            constr.setAccessible(true);
        }
        MessageContext context = constr.newInstance(player.connection, Side.SERVER); 
        handler.onMessage(message, context);
    }
    System.out.println("PacketFrom: "+msg.sender().getAddress()+ " "+msg.sender().getPort()+" ");

}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号