这是我第一次写博客,以前遇到技术上的困难总是查找很长时间的资料,好不容易解决后却没能将之记录下来。今后我将会把自己解决的一个个小问题记录在此,与大家分享学习心得,本人入行尚浅望各位大牛批评指正!

这篇博文,主要是总结了前段时间刚解决的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方式的数据传输相关推荐

  1. 在Android开发中,有哪些好的内存优化方式?如何避免 Out Of Memory(OOM) ?

    在Android中,一个Process 只能使用16M内存,要是超过了这个限定就会跳出这个异常.  那么,开发中,有哪些措施能避免这个问题呢?不仅仅是Bitmap的处理,其他方面也会导致OOM.有哪些 ...

  2. 【Android开发学习笔记之一】5大布局方式详解

    Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...

  3. Android开发中怎样调用系统Email发送邮件(多种调用方式)

    在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...

  4. 开发实践 | 使用Android开发TCP、UDP客户端(代码类)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 在进行Android开发的过程中, ...

  5. Android开发的之基本控件和详解四种布局方式

    Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...

  6. Android开发画布销毁,Android DialogFragment 在页面销毁下的使用方式

    今天看到了一篇文章,讲了DialogFragment的封装方式(Android:我为何要封装DialogFragment?),想到当初也为页面销毁后DialogFragment的回调方式头疼了好久,看 ...

  7. android中资源文件的两种访问方式,在android开发中进行数据存储与访问的多种方式介绍...

    在android开发中进行数据存储与访问的多种方式介绍 更新时间:2013年06月07日 16:24:23   作者: 很多时候我们的软件需要对处理后的数据进行存储或再次访问,Android为数据存储 ...

  8. # android开发:4-1、Activity启动方式、生命周期、不同activity的数据传递

    4.Activity活动简介 什么是Activity: 如何创建Activity: Activity启动方式: Activity的生命周期: 不同Activity之间数据的传递: 什么是Activit ...

  9. android.cat 镜像,Android开发利器之pidcat安装方式

    介绍pidcat: pidcat 是Android届JakeWharton大神开发的一款命令行工具,堪称Android开发利器,它能方便Android程序猿捕获日志,过滤日志,定位程序问题,超级好用. ...

最新文章

  1. 日志服务Flink Connector《支持Exactly Once》
  2. [PHP] debug_backtrace()可以获取到代码的调用路径追踪
  3. npc一定不能多项式时间内解决吗_P, NP, NPC 和 NPhard
  4. php常用快捷键,phpstorm常用快捷键
  5. 客户连接多个服务端_Dubbo源码解析之客户端Consumer
  6. grub4dos命令引导自定义映像_DOS的常用命令二
  7. MVC 无法将带 [] 的索引应用于“System.Dynamic.DynamicObject”类型的表达式
  8. 第一个ncurses程序: hello world !!!
  9. php几个问题的记录
  10. 9008刷机工具_黔隆科技刷机教程OPPOR11T忘记密码免刷机保资料解屏幕锁教程
  11. 软件测试工程师常见的面试题大全
  12. Madis模拟黏滞阻尼器
  13. 狼性的华为,是否有人性?
  14. LIFO栈 ADT接口 链表实现
  15. Gos —— 实现线程和进程
  16. 2016年7月的数据省市区数据
  17. 房屋租赁管理系统API
  18. python搭建博客系统_Mezzanine 搭建 BLOG 系统
  19. 2019年‘泰迪杯’数据分析职业技能大赛A题——个人代码分享
  20. 雷军:从苦逼撸代码到年入上百亿,成为商界领袖,改变现状,只靠单纯写代码远远不够

热门文章

  1. 2016年全国管理类硕士研究生考试——综合能力复习心得
  2. 大二开始职业规划正是时候
  3. 卖不动的江某白,还能靠什么打动年轻人?
  4. 代理模式Proxy——读书笔记
  5. 【源码】MarcusVollmer/HRV:用于心电图数据筛选以及心率变异性分析
  6. python easygui模块_easygui模块放在哪里?
  7. VVC/H.266帧间模式(二):Merge mode with MVD (MMVD)
  8. timeGetTime
  9. html网页宽度自动适应手机屏幕宽度的方法
  10. 向伟大的张三同志致敬