使用netty4.x 编写UDP服务器遇到的狗血问题

项目需要,需要编写协议转发服务器,和机顶盒通讯使用udp协议

流程:

接收协议->解析->路由->写入log->转发到指定设备.

之前有研究过netty框架,觉得比较轻便,就打算用这个框架来实现,参考官方的simple写了一个测试用例;

发现程序中udp数据怎么都接收不到.

用tcpdump -X udp port 7887听了下包,机器是收到的;

开始找问题.....

bla..bla...bla....

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("数据读取");
    }
}

怎么比对代码都没有错误,最后逐行查看发现;

import包错了,import部分又正好被ide隐藏了....这种狗血的问题..太让人崩溃了...还是不够仔细啊!!!!!!!!

//正确
import io.netty.channel.socket.DatagramPacket;
//错误
//import java.net.DatagramPacket;
时间: 2024-10-23 10:43:35

使用netty4.x 编写UDP服务器遇到的狗血问题的相关文章

使用netty4.x 编写TCP服务器关于握手问题

还是和机顶盒通讯的项目,netty编写udp的协议已经实现了完毕; 要求TCP也要来一套....我就呵呵了...写呗. 基本上流程差不多,decoder,encoder,handler几乎都可以重用的,写好后一测..吓我一大蹦 [INFO]-[Thread: nioEventLoopGroup-3-1]-[io.netty.util.internal.logging.Slf4JLogger.info()]: [id: 0x0bdcf37c, /0:0:0:0:0:0:0:0:5000] RECE

【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战

概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty4(Netty5已经被取消开发了:详见此文). 本文中,服务端将分别用MINA2和Netty4进行实现,但在你实际的项目中服务端实现只需选其一就行了.本文中的Demo同时

python编写socket服务器和客户端

本次使用的主要模块是socket模块,在这个模块中可以找到socket()函数,该函数用于创建套接字对象.套接字也有自己的方法集,这些方法可以实现基于套接字的网络通信. socket()模块函数 要创建套接字,必须使用socket.socket()函数,语法如下: socket(socket_family,socket_type,protocol=0) 其中socket_family是AF_UNIX(基于文件)或AF_INET(面向网络),socket_type是SOCK_STREAM(TCP)

C#网络编程系列文章(五)之Socket实现异步UDP服务器

原创性声明 本文作者:小竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 转载请注明出处 本文介绍 在.Net中,System.Net.Sockets 命名空间为需要严密控制网络访问的开发人员提供了 Windows Sockets (Winsock) 接口的托管实现.System.Net 命名空间中的所有其他网络访问类都建立在该套接字Socket实现之上,如TCPClient.TCPListener 和 UDPCl

uip UDP 服务器广播模式(客户端可以任意端口,并且主动向客户端发送数据)

目前移植uip,发现UDP 服务器模式下,必须指定本地端口以及客户端端口,否则只能讲客户端端口设置为0,才能接收任意端口的数据,但是无法发送数据,因为此时客户端端口设置为0了,我通过将原始数据包中的客户端端口保存下来,并且在发送的时候将客户端端口替换为指定的端口,发送完成之后又设置为0,这样就实现了向任意客户端端口发送数据. uip.c if(uip_udp_conn->lport != 0 && UDPBUF->destport == uip_udp_conn->lpo

C#的UDP服务器

最新优化版本 /* http://www.cnblogs.com/zengqinglei/archive/2013/04/27/3046119.html */ using System; using System.Text; #region 命名空间 using System.Net; using System.Net.Sockets; using System.Threading; using System.Media; #endregion namespace SocketServerCon

windows下UDP服务器和客户端的实现

UDP是面向非连接的协议,因此在实现UDP服务器时,服务器不用总是处于监听状态.可以直接收发数据. 服务器端 1.初始化 WASStartup ( ... ) 2.创建Socket s = socket ( .. ) 3.绑定 bind( .. ) 4.收发数据 recvfrom( .. ) sendto(..) 5.关闭连接,释放资源 closesocket(..) WSACleanup() 客户端 // 无需绑定 1.初始化 WASStartup ( ... ) 2.创建Socket s =

UDP服务器/客户端代码示例

UDP服务器代码: 1 #include <errno.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <sys/types.h> 5 #include <sys/socket.h> 6 #include <netinet/in.h> 7 #include <arpa/inet.h> 8 #include <iostream> 9 10 usi

【windows socket+UDP服务器客户端】

Windows Socket+UDP服务器客户端 Winsock是 Windows下套接字标准.                    1.UDP socket编程:          UDP(用户数据报协议)是一个无连接,不可靠的数据传输,其特点是简单,快捷.相比与TCP,UDP不需要建立连接(不需connect.accept函数),数据发送接收之后,不需要终止连接.基于UDP的程序,避免了TCP运行的开销,在效率与速度上具有更好的表现.          UDP是无连接的,可能会有数据的丢失