基于Android的UDP自动发现(接收与发送)

本文探讨了TCP与UDP的区别,并重点讲解了在Android中如何实现UDP的自动发现功能。发送方需要获取IP和自定义端口,而接收方设定相同端口即可开始阻塞式接收。注意接收操作不应在主线程中执行以防止ANR,且接收与发送应分别在不同设备上进行。提供相关代码示例。
摘要由CSDN通过智能技术生成

TCP和UDP的区别:

TCP(Transimission Control Protocol)即 传输控制协议:是面向连接的协议, 强调稳定可靠的连接,建立连接“三次握手”,断开连接需要“四次分手”,现常用于网络间视频与语音通话,及相应的网络间可靠的信息流通。

UDP(User Datagram Protocol)即 用户数据报协议:是面向报文的协议,两端无需建立连接即可传输数据,速度和效率都是TCP所不能比拟的,常用于局域网内数据互通,缓存读取,游戏及程序内高精度文件传输,NAT穿透等。


UDP在Android中的应用:

两端若需要建立UDP连接,

对于发送方:需要获取当前网络的host IP及自定的端口(建议大于1024)。

对于接收方:需要设定UDP连接的端口(与发送方端口保持一致),即可自动接收消息,其中该接收过程是阻塞式的,也就是说它一直在接收,当接收到了才会进行下一步(若接收到消息后还想继续接收,这时候需要把socket关闭,再能重复进行接收动作)

注意事项:由于接收动作是阻塞式的,因此不能放在主线程里(ANR),需要新建一个线程完成该操作。同时接收和发送两个动作不能放在同一个设备上(因为端口一致会导致冲突),建议两台设备或虚拟机进行调试。


代码如下:

(接收线程)


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值