设为首页 加入收藏

TOP

Netty编解码技术和UDP实现(六)
2018-03-02 06:57:07 】 浏览:551
Tags:Netty 解码 技术 UDP 实现
t; + ret2.length);


        // 写出文件
        String writePath = System.getProperty("user.dir") + File.separatorChar + "receive" + File.separatorChar
                + "006.jpg";
        FileOutputStream fos = new FileOutputStream(writePath);
        fos.write(ret2);
        fos.close();
    }
}


UDP的实现


代码示例:


public class Server {
    public void run(int port) throws Exception {
        EventLoopGroup group = new NioEventLoopGroup();
        try {
            Bootstrap b = new Bootstrap();
            b.group(group).channel(NioDatagramChannel.class).option(ChannelOption.SO_BROADCAST, true)
                    .handler(new ServerHandler());
            b.bind(port).sync().channel().closeFuture().await();
        } finally {
            group.shutdownGracefully();
        }
    }


    public static void main(String[] args) throws Exception {
        new Server().run(8765);
        new Server().run(8764);
    }
}



public class ServerHandler extends
    SimpleChannelInboundHandler<DatagramPacket> {


    // 谚语列表
    private static final String[] DICTIONARY = {
        "只要功夫深,铁棒磨成针。",
        "旧时王谢堂前燕,飞入寻常百姓家。",
        "洛阳亲友如相问,一片冰心在玉壶。",
        "一寸光阴一寸金,寸金难买寸光阴。",
        "老骥伏枥,志在千里。烈士暮年,壮心不已!"
    };


    private String nextQuote() {
        int quoteId = ThreadLocalRandom.current().nextInt(DICTIONARY.length);
        return DICTIONARY[quoteId];
    }


    @Override
    public void messageReceived(ChannelHandlerContext ctx, DatagramPacket packet)
        throws Exception {
        String req = packet.content().toString(CharsetUtil.UTF_8);
        System.out.println(req);
        if ("谚语字典查询?".equals(req)) {
            ctx.writeAndFlush(
                    new DatagramPacket(Unpooled.copiedBuffer("谚语查询结果: " + nextQuote(),
                    CharsetUtil.UTF_8), packet.sender()));
        }
    }


    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)
        throws Exception {
        ctx.close();
        cause.printStackTrace();
    }
}



public class Client {


    public void run(int port) throws Exception {
        EventLoopGroup group = new NioEventLoopGroup();
        try {
            Bootstrap b = new Bootstrap()

首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++ 重载运算符简单例子 下一篇基于注解的简单SSH保存用户小案例

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目