前言
前两天讲的是Netty的原理和实现过程,今天一些自己在项目上遇到的问题
过程
我这次是需要服务端的程序放到服务器上,所以在整个过程中遇到一些问题
1 在服务器上配置jdk
https://www.cnblogs.com/yuanbo123/p/5819564.html
2idea导出可运行的jar,但是报错了
https://www.cnblogs.com/VweiweiyixiaoV/p/6610681.html
原因是因为META-INF/MAIFEST.MF文件没有包含在内,解决方案,更改一下路径就可以了
https://blog.csdn.net/xuemengrui12/article/details/74984731
3但是客户端在访问的时候一直出现,原因是因为没有关闭服务器的防火墙,所以被挡到了外面
https://blog.csdn.net/zhyh1435589631/article/details/51036091
4但是运行的时候依旧是报错了
原因是发生了阻塞,更改服务端Handler里面的代码,当服务端读写完之后发生了阻塞没有及时的关闭
http://www.linkedkeeper.com/detail/blog.action?bid=1027
5关于日志问题
当时非常郁闷为什么配置了日志但是还说没有找到呢,突然灵光一现发现自己没有加载配置文件,哈哈
解决方案加上配置文件
//获取项目的根目录
String relativelyPath = System.getProperty("user.dir");
//log4j的路径
String log4jPath = relativelyPath + "/resources/log4j.properties";
//读取配置文件
PropertyConfigurator.configure(log4jPath);
6.解决在同一WiFi环境下,不同设备ping不通问题
https://jingyan.baidu.com/album/72ee561ab11933e16138dfc9.html?picindex=7
解决UDP丢包问题
在代码上进行优化
服务端代码优化设置UDP socket读缓冲区为2M
// 这一行设置了UDP socket读和写缓冲区为2M
selfBootStrap.option(ChannelOption.SO_RCVBUF, 1024 * 2048);
.option(ChannelOption.SO_SNDBUF, 2*1024 * 1024);// 设置UDP写缓冲区为1M
服务器上进行优化
1在Linux服务器上进行优化,对于读和写缓冲区的配置需要设置,缓冲区太小所以udp就丢包了哦。或者是udp发包太快,也丢包了,进行设置下面的属性,在文件下面/etc/sysctl.conf
rmem_max
wmem_max
当我们这些都配置完之后,我发了1000个包,最多只收到了90个包,当我我都绝望了,不知道应该怎么办,就各种查,各种问,最后才知道自己多写了两行代码,原因是因为我们Handler里面写了这两行代码,其实不用写着两行代码,如果写了那么我们每次都是强制性的去关闭它,所以Udp协议在网速快的时候他过来的包多点,他要是慢点就被我前置关闭了,Netty本身就会把我们关闭所以我们不需要手动去做。厉害吧~1000个包完全没有问题哦

总结
嘿嘿,这仅仅是开始,明天给大家分享电信平台这个东东哦。期待吧~

450

被折叠的 条评论
为什么被折叠?



