递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 6242|回复: 19
打印 上一主题 下一主题

[类库封装] HPSocket两个平台封装的用法差别太大了,组播互通有问题?

[复制链接]

2

主题

59

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
跳转到指定楼层
楼主
发表于 2021-5-20 18:21:52 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
需求情况,网络环境:192.168.0.0-192.168.1.255, 255.255.254.0,目的是用数据报-广播获取当前设备的当前IP。
安卓设备、PC都是DHCP,不好每次翻看具体IP。
如:安卓1:192.168.0.2;安卓1:192.168.0.3;PC1:192.168.0.3;
--------------------------------------------------------------------------
例1:广播模式(服务器地址用网段模式)HP_UDP广播器.传播模式 = HP传播模式.广播
安卓1:HP_UDP广播器.连接(“192.168.0.0”,1314,)     成功   HP_UDP广播器.取本地地址 ----192.168.0.2
安卓2:HP_UDP广播器.连接(“192.168.0.0”,1314,)     成功   HP_UDP广播器.取本地地址 ----192.168.0.3
PC1:HP_UDP广播器.连接(“192.168.0.0”,1314,,,)  失败  HP_UDP广播器.取本地地址 ----192.168.0.0/0.0.0.0(取不到真实地址)
注:安卓之间消息可以互通,PC连接启动失败
--------------------------------------------------------------------------
例2:广播模式(服务器地址用广播地址)HP_UDP广播器.传播模式 = HP传播模式.广播
安卓1:HP_UDP广播器.连接("192.168.1.255",1314,)    成功   HP_UDP广播器.取本地地址 ----192.168.0.2
安卓2:HP_UDP广播器.连接("192.168.1.255",1314,)    成功   HP_UDP广播器.取本地地址 ----192.168.0.3
PC1:HP_UDP广播器.连接("192.168.1.255",1314,,,) 成功  HP_UDP广播器.取本地地址 ----192.168.1.255/0.0.0.0(还是取不到真实IP地址)
注:安卓之间消息可以互通,三机互通。

--------------------------------------------------------------------------
因为可能网络环境会变,比如:192.168.0.0-192.168.1.255, 255.255.254.0-->192.168.2.0-192.168.3.255, 255.255.254.0
而且非 255.255.255.0 的网络下,计算出网段地址与广播地址现在没发现太好的方法(PC端还取不出本地IP)。所以想用组播模式,方便换环境使用。
以下:
--------------------------------------------------------------
例3:组播模式  
HP_UDP广播器.传播模式 = HP传播模式.组播
安卓1:HP_UDP广播器.连接("224.0.0.0",1314,)     失败   HP_UDP广播器.取本地地址 ----192.168.0.2
安卓2:HP_UDP广播器.连接("224.0.0.0",1314,)     失败   HP_UDP广播器.取本地地址 ----192.168.0.3
PC1:HP_UDP广播器.连接("224.0.0.0",1314,,,)  失败  HP_UDP广播器.取本地地址 ----192.168.0.0/0.0.0.0(同样取不到真实IP地址)
注:三种情况都连接启动失败。安卓用:224.0.0.0~224.0.0.255/224.0.1.0~238.255.255.255/239.0.0.0~239.255.255.255全失败PC全成功
--------------------------------------------------------------------------
结论:组播模式下安卓类库 全启动失败本机IP可获取,PC下广播模式虽然只能用.255的广播地址,组播地址都没问题


请问:是不是我用的方式不对?大侠们可不可指导一下安卓端怎么成功启用组播模式?谢谢了!
回复

使用道具 举报

2

主题

59

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
20#
 楼主| 发表于 2021-5-22 22:05:31 | 只看该作者
华天微读 发表于 2021-5-22 20:34
额 抱歉, 原来已经有了, 用这个方法

收到,收到,测试成功。
回复

使用道具 举报

14

主题

105

帖子

651

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
651
QQ
19#
发表于 2021-5-22 20:34:59 | 只看该作者
redxblue 发表于 2021-5-22 17:36
,感谢的心情实在是无以言表。

额 抱歉, 原来已经有了, 用这个方法
火山基础入门,100元特价优惠!
加群咨询:710113438
详情:http://jc.wlxs.net/
回复

使用道具 举报

2

主题

59

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
18#
 楼主| 发表于 2021-5-22 17:36:05 | 只看该作者
华天微读 发表于 2021-5-22 09:20
哦 好, 可以增加一个枚举本机地址的方法.  增加后, 我在本帖内回复

,感谢的心情实在是无以言表。
回复

使用道具 举报

14

主题

105

帖子

651

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
651
QQ
17#
发表于 2021-5-22 09:20:24 | 只看该作者
redxblue 发表于 2021-5-21 13:37
这个。。。我就是想取到本地的IP啊。。我是要自己用其他方法取到当前IP,然后再绑定吗?那这个方法的目的 ...

哦 好, 可以增加一个枚举本机地址的方法.  增加后, 我在本帖内回复
火山基础入门,100元特价优惠!
加群咨询:710113438
详情:http://jc.wlxs.net/
回复

使用道具 举报

2

主题

59

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
16#
 楼主| 发表于 2021-5-21 19:04:58 来自手机 | 只看该作者
本帖最后由 redxblue 于 2021-5-21 19:07 编辑

细想也是,与安卓常用的不同,pc多网卡情况很多,取本地地址还真不能这么取。而且绑完后去验证当前绑的是哪个网络也很正常。是我年轻了。
回复

使用道具 举报

2

主题

59

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
15#
 楼主| 发表于 2021-5-21 18:21:19 | 只看该作者
华天微读 发表于 2021-5-21 11:21
还有就是, PC需要先绑定本机地址, 然后, 才能通过"取本地端口"与"取本地地址" 获得已绑定的端口和地址. ...

安卓更新后试了一下:
安卓版可以直接取当前本地地址:(不用连接)

PC 版(不连接前是失败的与安卓很大不同,连接时不绑取回是0.0.0.0):

我现在想如果最后不行,我就开启组播回路=》给本机发个特定消息=》取数据报远程地址=》再得到真实的本地IP
这个方式好挠远
回复

使用道具 举报

2

主题

59

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
14#
 楼主| 发表于 2021-5-21 13:37:15 | 只看该作者
华天微读 发表于 2021-5-21 11:21
还有就是, PC需要先绑定本机地址, 然后, 才能通过"取本地端口"与"取本地地址" 获得已绑定的端口和地址. ...

这个。。。我就是想取到本地的IP啊。。我是要自己用其他方法取到当前IP,然后再绑定吗?那这个方法的目的是需要在某些情况下取出绑定的IP来验证或什么的用的吗?
另:安卓版取的就是本地的IP,即使还没有用连接启动广播也能取到本机当前的IP。
十分感谢你的回应,望再解惑。。。
回复

使用道具 举报

2

主题

59

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
13#
 楼主| 发表于 2021-5-21 13:30:53 | 只看该作者
华天微读 发表于 2021-5-21 10:54
您好,感谢您的反馈, 目前您所反馈的问题以修复. 您可以下载此文件先行体验, 下次更新,将会同步到火山库中.
...

好谢谢,我先试试
回复

使用道具 举报

14

主题

105

帖子

651

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
651
QQ
12#
发表于 2021-5-21 11:21:25 | 只看该作者
还有就是, PC需要先绑定本机地址, 然后, 才能通过"取本地端口"与"取本地地址" 获得已绑定的端口和地址.
火山基础入门,100元特价优惠!
加群咨询:710113438
详情:http://jc.wlxs.net/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-6-18 10:58 , Processed in 0.114002 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表