netty创建udp客户端

xiaoxiao2021-02-28  85

介绍本书给大家,netty最新的技术书籍,已有实体书籍,我买了一本,但内容没有这个全面

https://waylau.gitbooks.io/essential-netty-in-action/

具体请参照我上一篇文章,netty的udp服务端

启动类

package com.use.socket.udp.client;

import java.net.InetSocketAddress; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.Unpooled; import io.netty.channel.Channel; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.DatagramPacket; import io.netty.channel.socket.nio.NioDatagramChannel; import io.netty.util.CharsetUtil; public class UdpClient { public void run(int port,String context)throws Exception{ EventLoopGroup group=new NioEventLoopGroup(); try { Bootstrap b=new Bootstrap(); b.group(group).channel(NioDatagramChannel.class) .option(ChannelOption.SO_BROADCAST, true) .handler(new UdpClientHandler()); Channel ch=b.bind(0).sync().channel(); ch.writeAndFlush( new DatagramPacket( Unpooled.copiedBuffer(context, CharsetUtil.UTF_8),  new InetSocketAddress("locahost", port))); if(!ch.closeFuture().await(15000)){ System.out.println("查询超时"); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally{ group.shutdownGracefully(); } } public static void main(String[] args) throws Exception { int port=8080; String context="qwww"; if(args.length>0){ try { port=Integer.parseInt(args[0]); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } new UdpClient().run(port,context); }

}

具体实现方法

package com.use.socket.udp.client; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.channel.socket.DatagramPacket; import io.netty.util.CharsetUtil; public class UdpClientHandler extends SimpleChannelInboundHandler<DatagramPacket>{ @Override protected void messageReceived(ChannelHandlerContext ctx, DatagramPacket packet) throws Exception { // TODO Auto-generated method stub String response=packet.content().toString(CharsetUtil.UTF_8); if(response.startsWith("结果:")){ System.out.println(response); ctx.close(); } } @Override    public void exceptionCaught(ChannelHandlerContext ctx,Throwable cause)throws Exception{        ctx.close();        cause.printStackTrace(); } }

转载请注明原文地址: https://www.6miu.com/read-69854.html

最新回复(0)