項目須要,須要編寫協議轉發服務器,和機頂盒通信使用udp協議java
流程:服務器
接收協議->解析->路由->寫入log->轉發到指定設備.框架
以前有研究過netty框架,以爲比較輕便,就打算用這個框架來實現,參考官方的simple寫了一個測試用例;socket
發現程序中udp數據怎麼都接收不到.tcp
用tcpdump -X udp port 7887聽了下包,機器是收到的;ide
開始找問題.....測試
bla..bla...bla....spa
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import java.net.DatagramPacket; /** * Created by konbluesky * Date : 15/7/16 上午12:37 */ public class UDPServerHandler extends SimpleChannelInboundHandler<DatagramPacket> { @Override public void channelRegistered(ChannelHandlerContext ctx) throws Exception { super.channelRegistered(ctx); System.out.println("鏈接建立"); } @Override protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception { ctx.writeAndFlush(msg); System.out.println("數據讀取"); } }
怎麼比對代碼都沒有錯誤,最後逐行查看發現;.net
import包錯了,import部分又正好被ide隱藏了....這種狗血的問題..太讓人崩潰了...仍是不夠仔細啊!!!!!!!!netty
//正確 import io.netty.channel.socket.DatagramPacket; //錯誤 //import java.net.DatagramPacket;