码迷,mamicode.com
首页 > 其他好文 > 详细

UDP学习1(发送端demo)

时间:2014-12-04 11:58:30      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   java   

  最近是项目的最后阶段——系统测试,刚好今早有点空余时间,利用这点时间用Java写了一个UDP发送数据的demo,本人最近也正在学习Java(目前在做asp.net web开发),欢迎各位指点刚毕业不久的小菜鸟。下面进入正文。

  什么是UDP?UDP就是网络传输协议的其中一种,网络间的应用程序想互相传输数据可以遵循的一种协议。按个人理解,它有以下这几个特点:1.无连接的,通俗点来说发送端无需确认接收端是否开启,不需要建立连接,发送端也可以将数据发送出去,不过这个时候会造成数据包的丢失;2.不可靠的,因为它是无连接的,从而从发送端到接收端之间数据的传递会造成丢失,协议本身不做出任何的检测和提示,所以是不可靠的;3.速度快(相对应TCP来说),因为发送端在传输数据包的过程中不需要检测接收端是否开启,而TCP则相反;4.网络开销小(相对应TCP来说),它的信息包标题是八个字节,而TCP则是20个字节;5.面向报文的。总结完UDP的特点后,下面就是本人的一个通过UDP发送数据包的demo.

  只要明确通过UDP发送数据的流程,代码写起来就容易简单了.步骤如下:1.建立发送端socket服务(需要明确发送端地址);2.准备发送的数据包(需要明确发送到哪里哪个端口);3.发送;4.关闭socket服务,因为socket依赖底层系统资源,需要将它关闭.通过Notepad++写了如下代码:

bubuko.com,布布扣
 1 import java.net.*;
 2 class UDPSendDemo
 3 {
 4     public static void main(String[] args) throws Exception
 5     {
 6         InetAddress ia=InetAddress.getByName("localhost");//发送端地址
 7         //建立发送端socket服务
 8         DatagramSocket ds=new DatagramSocket(12222,ia); //12222为发送端端口号
 9         //准备需要发送的数据包
10         byte[] buf="UDP lai le".getBytes();
11         //这里的ia是指接收端地址,在本地测试所以干脆用本地也作为接收端.12222为接收端端口号
12         DatagramPacket dp=new DatagramPacket(buf,buf.length,ia,12222);
13         //发送
14         ds.send(dp);
15         //关闭服务
16         ds.close();
17     }
18 }
View Code

  打开命令行,通过javac编译生成class文件,这个时候我遇到了一个小问题,看下图:

 

bubuko.com,布布扣

经过查看,我的记事本用的是UTF-8编码,而jvm默认的是GBK编译,从而造成了编译失败,于是将记事本改成GBK编码,再编译,终于成功了,接着运行也ok了,因为是无连接的,数据是发出去了,但是没有服务端接收,造成了数据的丢失,下一篇文章中,我将学习如何在接收端接收数据.

bubuko.com,布布扣

UDP学习1(发送端demo)

标签:style   blog   http   io   ar   color   os   sp   java   

原文地址:http://www.cnblogs.com/LenLi/p/4142334.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!