默认
打赏 发表评论 111
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
感谢楼主,正好最近学习上有需求,但是自己又不是很懂,哈哈
签名: 通讯相关的没搞好,作业日期要到了,只能先把这部分功能搁一搁了,可惜。
评论 111
博主好呀,可以问个问题码?最近用了你的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在本地访问公网服务器的情况,要怎么做?网上查了很多网文,好像没找到比较清楚地说明要用啥的。额
签名: 通讯相关的没搞好,作业日期要到了,只能先把这部分功能搁一搁了,可惜。
引用:JackJiang 发表于 2019-12-22 23:01
能简单一句话,讲明白(不要讲技术),你遇到的是什么问题吗?(尽量从功能表面上讲)

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

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

返回顶部