默认
打赏 发表评论 113
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
太强了。 点赞
good!学习了!!!!
你好 Jack
我有个基础问题不太懂,想请教一下。
udp的话超过一定时间不通讯,一般外网路由器会关闭那个临时端口的,这时外网服务器是无法给客户端推送的。这个是间不一定,有的可能超过10秒不通讯就关闭了。
您是如何保证服务器一直可以正常发送消息给客户端的?
引用:吴佳同 发表于 2019-09-11 18:08
你好 Jack
我有个基础问题不太懂,想请教一下。
udp的话超过一定时间不通讯,一般外网路由器会关闭那个临 ...

用心跳。你可以看一下这篇文章《为什么说基于TCP的移动端IM仍然需要心跳保活?》,虽然文章是以tcp不例讲的,但udp的道理是一模一样的,没区别。
引用:JackJiang 发表于 2019-09-11 20:25
用心跳。你可以看一下这篇文章《为什么说基于TCP的移动端IM仍然需要心跳保活?》,虽然文章是以tcp不例讲 ...

学习了
感谢 Jack

非常感谢,我将会使用这个demo进行学习
引用:wx_p0w0X57X 发表于 2019-10-16 10:51
非常感谢,我将会使用这个demo进行学习

NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示 [附件下载]_运行正常 阔以运行

感动吧,终于通了。。
感谢楼主,正好最近学习上有需求,但是自己又不是很懂,哈哈
签名: 通讯相关的没搞好,作业日期要到了,只能先把这部分功能搁一搁了,可惜。
引用:njakdnjljqlwjd 发表于 2019-12-11 16:02
感谢楼主,正好最近学习上有需求,但是自己又不是很懂,哈哈

嗯嗯
博主好呀,可以问个问题码?最近用了你的UDP代码,然后本地局域网环境是可以运行的,但是如果我后端代码放在公网服务器(阿里云)就不能收到本地android的UDP包了。我有把目的地址的serverIP设置成服务器的公网IP,端口serverUDPPort也是服务器端代码对应修改了,防火墙开放了所有UDP端口。但是我本地输出测试了一下,android发送出去的时候,ds.getRemoteSocketAddress()确实是服务器的IP和端口,但是ds.getLocalSocketAddress()是127.0.0.1,不知道会不会是这个问题。如果修改LocalUDPSocketProvider.java第30行的this.localUDPSocket = new DatagramSocket(ConfigEntity.localUDPPort);多加第二个参数InetAddress.getLocalHost(),那么控制台要是输出ds数据包的信息,会得到ds.getLocalSocketAddress()是:/169.254.146.145 是保留地址。
然而我经过多次修改,服务器还是没能收到数据包(Linux的netstat -su没有看到UDP包的接收和发送收到android端的影响,而且我执行接收和发送的地方有一个日志输出Log的代码,监听日志并没有记录)。

想问一下,UDP在本地访问公网服务器的情况,要怎么做?网上查了很多网文,好像没找到比较清楚地说明要用啥的。额
签名: 通讯相关的没搞好,作业日期要到了,只能先把这部分功能搁一搁了,可惜。
引用:njakdnjljqlwjd 发表于 2019-12-22 04:59
博主好呀,可以问个问题码?最近用了你的UDP代码,然后本地局域网环境是可以运行的,但是如果我后端代码放 ...

能简单一句话,讲明白(不要讲技术),你遇到的是什么问题吗?(尽量从功能表面上讲)
引用:JackJiang 发表于 2019-12-22 23:01
能简单一句话,讲明白(不要讲技术),你遇到的是什么问题吗?(尽量从功能表面上讲)

后来我试了下,Linux抓包能抓到客户端发来的UDP包了。但是后端不能执行接收包和发送包的步骤(对应channelRead0),就是后端接收和发送的代码不被执行,好像说这个方法是只要接收到信息就会触发的吧。
签名: 通讯相关的没搞好,作业日期要到了,只能先把这部分功能搁一搁了,可惜。
引用:njakdnjljqlwjd 发表于 2019-12-23 02:10
后来我试了下,Linux抓包能抓到客户端发来的UDP包了。但是后端不能执行接收包和发送包的步骤(对应channe ...

是的。代码总共也没几行,你读一下
引用:JackJiang 发表于 2019-12-23 15:54
是的。代码总共也没几行,你读一下

额,代码是有读了,主要我自己本身对Netty的基础使用还不是很了解。虽然代码都能看懂大致是什么执行流程,但是还是没弄懂为啥ChannelRead0没执行.今天3点多最后挣扎了一次,自己又多写了个ChannelRead方法,里面判断类型再调用ChannelRead0,可惜的是这2个方法都没有被调用。我依旧没有解决问题。我想我需要先把基础的东西学一学再继续尝试这个UDP的代码。谢谢楼主了
签名: 通讯相关的没搞好,作业日期要到了,只能先把这部分功能搁一搁了,可惜。
引用:njakdnjljqlwjd 发表于 2019-12-23 16:21
额,代码是有读了,主要我自己本身对Netty的基础使用还不是很了解。虽然代码都能看懂大致是什么执行流程 ...

你不用着急,netty其实是有点复杂的框架,你找本教程或书,把netty基础系统的学习一下,就不会有什么了
攒点金币下载源码
签名: 我开心的很哦
感谢分享
感谢分享、学习了
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部