理解java中的UDP传输!

UDP协议传输是不需要建立连接的,因为发送端是将需要发送的数据先进行打包处理,然后再将这个包发送的指定的IP地址的指定端口上面!其中主要需要用到的两个对象是DatapramSocket、DatapramPacket! 

DatapramSocket对象是在两个主机上建立Socket服务,然后再进行数据的的传送,在进行数据传送的时候需要先将数据用DatapramPacket对象将数据先打包然后再发出。这就是UDP传送的好处:不需要建立连接,只管往你的目的地(IP地址)发送就可以了,并且速度很快!但是不好之处就是:如果对方没有没有及时收到的话那么就会造成数据的丢失,所以像网络下载这种任务如果采用的是UDP协议传送的话肯定是行不通的,但是像一些聊天工具是可以采用的!

下面有一段向某IP地址发送一段文字的代码,便于理解UDP传输:

package net.udp;
//该程序作为发送端
/* 需求:
 *   通过UDP的方式将一段文字发送出去。
 * 
 * 思路与步骤:
 * 1.要创建一个udpSocket(即创建一个DatagtamSocket对象) 端点,
 *   因为只有这个对象能够将你需要发送的数据与底层的端口相连接以便发出。
 * 2.提供数据,也就是你需要发送的数据并且将数据用DatagramPacket对象封装。
 * 3.利用DatagramSocket对象的send()方法将需要发送的数据发送出去。
 * 4.关闭资源 
 * */
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class udpSendDemo {
public static void main(String[] args)throws Exception{
//创建udp服务
DatagramSocket ds = new DatagramSocket();
//确定数据并且封装成数据包
byte[] buf = "Hello UDP".getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,
InetAddress.getByName("211.69.239.85"),10000);
//通过DatagramSocket对象的send()方法发送出去
ds.send(dp);
//关闭资源
ds.close();
}
}


package net.udp;


import java.net.DatagramPacket;
import java.net.DatagramSocket;


//作为UDP接收端
/* 需求:
 * 建立一个程序用于接受UDP协议传输的数据信息并处理。
 * 思路:
 * 1.创建UDPStocket
 * 2.定义一个数据包,因为要存储接收到的字节数据,
 * 数据包对象中有许多功能提取字节数据的不同的信息
 * 3.使用DatagramSocket对象的receive()方法
 *  4.关闭资源
 * */
public class udpReceDemo {
public static void main(String[] args)throws Exception{
//创建UDPSocket,建立端点
DatagramSocket ds = new DatagramSocket();
// 创建一个数据包用于接收数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//通过ds的receive()方法将收到的数据存入数据包中
ds.receive(dp);
//通过数据包的方法获取其中的数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println();
//关闭资源
ds.close();
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值