Android UDP协议通信简单尝试
来源:互联网 发布:淘宝客不计入销量了吗 编辑:程序博客网 时间:2024/05/19 07:07
Android UDP协议通信
ZHR
UDP:UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议。与TCP相比没有是否发送成功的判断机制,相比起来不安全但是速度更快,发送方式更简单,比TCP更合适只发送或者只接收信息的机制。
目标:实现手机与PC通过PC连接手机的热点形成的局域网通信,手机只发送信息,PC只接收数据
实现:主要使用两个类,DatagramSocket与DatagramPacket.
第一步:在AndroidManifest.xml文件中添加入网许可
<uses-permissionandroid:name="android.permission.INTERNET"></uses-permission>
第二步:在Macitvity.java中新建几个变量
private intlocalPort=8102; //本地端口
private int romotePort=8102; //远程端口
InetAddress address=null; //远程IP
第三步:新建UDP通信的套接字与数据包
DatagramSocket socket_UDP = null; //UDP协议SocketDatagramPacket DP = null; //UDP协议数据包
第四步:新建一个用于存命令的字符串
public static String string = null; //指令
注意:由于在使用Android UDP通信中发现将UDP发送程序放于线程之外会失效或闪退,于是自己封装了一个一次性的发送线程,效率不做考虑仅从完成功能的目的考虑,所以在程序中创建一个全局变量字符串,通过每次发送之前修改字符串内容,而改变发送的内容。由于UDP的发送只需要远程端的IP地址与端口于是不需要进行连接,只需要使用合适的发送语句即可。
第五步:封装UDP的发送数据方法
//UDP数据发送public void senCmd(String str){ string = str; Thread t = new UDPSendThread(); t.start();}//发送数据线程public class UDPSendThread extends Thread{ @Override public void run() { sendData_UDP(string); }}//UDP发送数据基层代码public void sendData_UDP(String str){ try{ socket_UDP = new DatagramSocket(localPort); //新建UDP类型Socket绑定本地端口 byte[] byteDate = str.getBytes(); DP = new DatagramPacket(byteDate, byteDate.length, address, romotePort); //将数据装包发送给远程IP与端口 socket_UDP.send(DP); //发送数据包 socket_UDP.close(); }catch (Exception e){ e.printStackTrace(); }}
注意由于线程是一次性的,所以不用手动去销毁。同时需注意addresss是通过将edittext中的IP转换成InetAddress格式使用。
注意:以上是成功后的程序,单独将UDP部分程序拿出,PC连接手机热点
转载请注明出处
阅读全文
0 0
- Android UDP协议通信简单尝试
- java/android udp协议通信
- UDP协议通信简单代码分析
- Android Socket通信(一)--基于UDP协议通信
- Android Socket UDP通信的简单演示
- 一个简单的Java UDP协议通信的例子
- java socket UDP协议收发数据简单实现通信示例
- vs2015基于UDP协议的简单通信例程
- Python实现udp协议的简单服务器和客户端通信
- android手机与服务器基于UDP协议的通信
- 基于Android系统的socket UDP协议通信
- 简单UDP通信
- udp通信简单实例
- UDP简单通信
- 简单udp通信
- 简单的UDP通信
- 简单的UDP通信
- UDP简单通信例子
- 2017.9.10 连续攻击游戏 思考记录
- pin_ptr (C++/CLI)
- Hibernate初学者---关于log4j 的知识
- 请算法简单点(1)
- 打印下列华氏温度与摄氏温度对照表。
- Android UDP协议通信简单尝试
- Add Two Numbers算法
- BZOJ 4010 菜肴制作(拓扑排序)
- mysql表损坏及修复
- MATLAB元胞数组写入Access数据库
- 在 centos7 版本中的 各项服务启动命令
- 2018京东笔试
- 面试题(2)
- 解决nginx重启“var/run/nginx/nginx.pid" no such file or directory问题