Android开发--Udp方式的数据传输
这是我第一次写博客,以前遇到技术上的困难总是查找很长时间的资料,好不容易解决后却没能将之记录下来。今后我将会把自己解决的一个个小问题记录在此,与大家分享学习心得,本人入行尚浅望各位大牛批评指正!
这篇博文,主要是总结了前段时间刚解决的Android开发中,Upd方式的数据传输的实现,好了,废话不多说。
一、要使用Udp传输就必须先在Android工程下的AndroidMainfest里添加用户的权限,代码如下:
<uses-permissionandroid:name="android.permission.INTERNET" />
二、在添加完权限之后,就开始我们的程序的编写,首先是发送程序:
DatagramSocket ds = new DatagramSocket(8001);//创建一个DatagramSocket对象,并指定一个端口号
String SendData = "要发送的数据";//传递要发送的数据
byte[] bstr = SendData.getBytes();//将发送数据转换成二进制数组
DatagramPacket dp =newDatagramPacket(bstr,bstr.length,InetAddress.getByName("192.168.1.103"),10333);//新建一个DatagramPacket对象,将目标IP地址和端口号修改成//你要发送的目标地址及端口号
ds.send(dp);//发送数据包
ds.close();
三、写完发送程序紧接着来写接收程序,代码如下:
DatagramSocketds = new DatagramSocket(8001);//创建一个DatagramSocket对象,并指定一个端口号
while(true)//用一个循环来接收数据包
{
byte[]buf = new byte[1024]; //开辟一个二进制数组用于存储数据。
DatagramPacket dp = new DatagramPacket(buf,buf.length);//创建一个长度为buf.length的数据包
try{
ds.receive(dp);//阻塞式方法。通过服务的receive方法将收到数据存入数据包中。
if(dp!=null){
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
}
}
catch(Exception e){
e.printStackTrace();
}
//4,通过数据包的方法获取其中的数据。
finally{
;//可自行添加
}
}
四、在写完接收程序后,你会发现程序一旦运行就会一直卡在那好像死机了一样,原因是ds.receive(dp);是一个阻塞式的方法,程序会一直等在那,如果用主线程来接收,这无疑会使得程序卡在那,所以我们的接收程序都应该在写在子线程里,而线程间的数据传输就要通过Handler/Message对象来实现。
五、我们一般都希望接收和发送使用同一个端口,所以我可以将DatagramSocket 对象设置为全局变量,记得自行添加try,catch语句哦~
希望这篇博文能给初学者们一点小小的帮助
Android开发--Udp方式的数据传输相关推荐
- 在Android开发中,有哪些好的内存优化方式?如何避免 Out Of Memory(OOM) ?
在Android中,一个Process 只能使用16M内存,要是超过了这个限定就会跳出这个异常. 那么,开发中,有哪些措施能避免这个问题呢?不仅仅是Bitmap的处理,其他方面也会导致OOM.有哪些 ...
- 【Android开发学习笔记之一】5大布局方式详解
Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...
- Android开发中怎样调用系统Email发送邮件(多种调用方式)
在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...
- 开发实践 | 使用Android开发TCP、UDP客户端(代码类)
博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 在进行Android开发的过程中, ...
- Android开发的之基本控件和详解四种布局方式
Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...
- Android开发画布销毁,Android DialogFragment 在页面销毁下的使用方式
今天看到了一篇文章,讲了DialogFragment的封装方式(Android:我为何要封装DialogFragment?),想到当初也为页面销毁后DialogFragment的回调方式头疼了好久,看 ...
- android中资源文件的两种访问方式,在android开发中进行数据存储与访问的多种方式介绍...
在android开发中进行数据存储与访问的多种方式介绍 更新时间:2013年06月07日 16:24:23 作者: 很多时候我们的软件需要对处理后的数据进行存储或再次访问,Android为数据存储 ...
- # android开发:4-1、Activity启动方式、生命周期、不同activity的数据传递
4.Activity活动简介 什么是Activity: 如何创建Activity: Activity启动方式: Activity的生命周期: 不同Activity之间数据的传递: 什么是Activit ...
- android.cat 镜像,Android开发利器之pidcat安装方式
介绍pidcat: pidcat 是Android届JakeWharton大神开发的一款命令行工具,堪称Android开发利器,它能方便Android程序猿捕获日志,过滤日志,定位程序问题,超级好用. ...
最新文章
- 日志服务Flink Connector《支持Exactly Once》
- [PHP] debug_backtrace()可以获取到代码的调用路径追踪
- npc一定不能多项式时间内解决吗_P, NP, NPC 和 NPhard
- php常用快捷键,phpstorm常用快捷键
- 客户连接多个服务端_Dubbo源码解析之客户端Consumer
- grub4dos命令引导自定义映像_DOS的常用命令二
- MVC 无法将带 [] 的索引应用于“System.Dynamic.DynamicObject”类型的表达式
- 第一个ncurses程序: hello world !!!
- php几个问题的记录
- 9008刷机工具_黔隆科技刷机教程OPPOR11T忘记密码免刷机保资料解屏幕锁教程
- 软件测试工程师常见的面试题大全
- Madis模拟黏滞阻尼器
- 狼性的华为,是否有人性?
- LIFO栈 ADT接口 链表实现
- Gos —— 实现线程和进程
- 2016年7月的数据省市区数据
- 房屋租赁管理系统API
- python搭建博客系统_Mezzanine 搭建 BLOG 系统
- 2019年‘泰迪杯’数据分析职业技能大赛A题——个人代码分享
- 雷军:从苦逼撸代码到年入上百亿,成为商界领袖,改变现状,只靠单纯写代码远远不够