黑马程序员_10 UDP


---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! --------


                                                       网络编程

一TCP和UDP的特点:
UDP 
(1)将数据和源和目的封装成数据包,不需要建立连接。
(2) 每个数据大小限制在64k内。
(3)因不需要建立连接,所以不可靠。
(4)不需要建立连接,速度快。 
TCP
(1) 建立连接,形成传输数据的通道。
(2) 在连接中进行大量数据传输。
(3)通过三次握手完成连接,是可靠协议。
(4)因为要建立连接,效率稍低。
二 socket 
UDP 发送端实例:
public static void main(String[] args) throws Exception {
/*
创建UDP传输的发送端
1.建立udpSocket服务
2.提供数据,并将要发送的数据分装到数据包中
3.通过UDP的Socket服务,将数据发送出去
4.关闭Socket服务
*/


//1.建立UDP服务,使用DatagramSocket
DatagramSocket ds = new DatagramSocket();


//2.将要发送的数据封装到数据包中
String str = "hello udp";
//使用DatagramPack 将数据打包到文件中
byte [] buf = str.getBytes();
//其中new DatagramPacket(数组, 长度,地址,端口号);
DatagramPacket dp =
new DatagramPacket(buf, buf.length,InetAddress.getByName("127.168.1.1"),10000);


//3.发送数据,通过UDP中的send方法,将数据发送出去
ds.send(dp);


//4.关闭资源
ds.close();
UDP接收端实例:
public static void main(String[] args) throws Exception {
/*
建立UDP接收端的思路
1.定义UDPSocket 服务
2.定义数据包来接受数据,
3.通过SOcket方法中的 receive方法接收,并将接收到的数据写入到数据包中
4.通过数据包特有功能,对数据进行操作。
5.关闭资源
*/


//1.建立UDP SOcker 系统服务,其中一定要传入端口号
DatagramSocket ds = new DatagramSocket(10000);


//2.建立数据包,存储数据
byte [] buf = new byte [1024] ;
DatagramPacket dp = new DatagramPacket(buf, buf.length);
//3.通过Socket中的receive方法将数据写入
ds.receive(dp);//这个方法是阻塞式的,所以一定要注意


//通过数据包方法获取数据
String ip = dp.getAddress().getHostAddress();//获取IP
int port = dp.getPort();//获取端口


//4.解析数据,其中一定要重点的注意数据的解析的是datagrampacket 
String str = new String(dp.getData(),0,dp.getLength());
//将端口数据打印
System.out.println(ip+port);
//打印数据
System.out.println(str);


//5.关闭资源
ds.close();


}
三 UDP协议应用场合与服务


   UDP提供的服务是不可靠的、无连接的服务,UDP适用于无须应答并且通常一
次只传送少量数据的情况。由于UDP协议在数据传输过程中无须建立逻辑连接,对
数据报也不进行检查,因此UDP具有较好的实时性,效率高。在有些情况下,包括
视频电话会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
对于网络游戏,视频聊天,语音聊天这种应用,由于用户对数据实时性的要求很高,
而对数据完全正确性的要求又有所降低。(比如,聊天的时候,如果有个别数据包丢失
或者有误,充其量你就得到一些声音不清楚,不会影响聊天的体验。) UDP协议就诞生
在这种需求下。
所以,总结起来,UDP协议被广泛的使用在对网络数据传输实时性很高而对数据准确
性要求不是非常高的场所。


--------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! -----------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值