UDP协议实现rn app之间通信
发布网友
发布时间:2022-12-24 16:10
我来回答
共1个回答
热心网友
时间:2023-10-09 13:04
最近要求要用rn做一个udp通信的软件,首先先了解下这些udp这些概念。
然后在android里面开始写组件
这里需要用到DatagramSocket方法
创建好了连接就发送信息
接收信息,
如果你的手机收不到通知,其他的可以,那么你的手机应该是把接受广播的功能关了,因为手机为了省电吧,
执行下面的打开接收通知就可以了,
上面方法在MainActivity里面的onCreate里面执行
发送数据
接收数据
封装成rn方法
package rn的方法
添加到主函数里面
前端用法:
在实现发送信息的时候会出现,当下次接收到的数据字(a长度)节小于前一次的(b长度)的时候,接收到的信息只会更新前a个数据,b-a后面的数据依然存在,比如第一次发送abc,第二次发送12,这时接收到的数据就是12c而不是我们想要的12。 这时因为udp存在缓存问题,所以要清空缓存。
方法:在取出数据后,执行如下方法
然后就清空了缓存区域
需要先了解下ip和子网掩码二进制转化:
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)
假如计算机的IP位址是192.15.156.205,子网掩码是255.255.255.224,
先把子网掩码255.255.255.224做 NOT 运算﹐可以得出﹕
00000000.00000000.00000000.00011111
然后再和IP做一次 OR 运算﹐就可以得到 Broadcast Address:
11000000.00001111.10011100.11001101 OR 00000000.00000000.00000000.00011111
(192.15.156.205 OR 255.255.255.224)
得出﹕ 11000000.00001111.10011100.11011111
(192.15.156.223)
192.15.156.223就是那个子网的广播地址了. 知道广播地址后就可以以这个地址来发送消息了,局域网的都可以接收到了。
当网络间进行通信时,如需确定是否在同一网络,则用某台主机的网络号与另一台主机的子网掩码进行与运算,观察网络号与与运算的结果是否相同。
其中还有了解下子网掩码,不然还是不知所以, 子网掩码
参考地址
参考地址
个人博客地址