UDP协议的简单使用

来源:互联网 发布:西南政法大学王洪 知乎 编辑:程序博客网 时间:2024/05/18 02:26

一.UDP介绍
UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包。在OSI模型中,在第四层——传输层。他的去缺点是当报文发送之后,是无法得知其是否安全完整到达的。而他的优点是传输速度更快。通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的ICQ和OICQ就是使用的UDP协议
二.示例

发送端:
/**
* udp的发送端
* 1.建立udp的socket服务对象
* 2.将要发送的数据封装成数据包
* 3.通过udp的socket服务将数据包发出
* 4.关闭资源
* @author jaques
*
*/
public class SendTest {
public static void main(String[] args) throws IOException{
//创建socket服务对象,参数为本地主机可用端口
DatagramSocket ds=new DatagramSocket(2500);

    //将字符串存入byte数组    String s=new String("你好udp");    byte[] b=s.getBytes();    //返回给定主机的ip    InetAddress ip=InetAddress.getByName("127.0.0.1");    //封装数据    DatagramPacket dp=new DatagramPacket(b,b.length,ip,8536);    ds.send(dp);    ds.close();

接受端:
package net.UDP;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
* udp的接受端
*
* @author jaques
*
*/
public class ReceiveTest {
public static void main(String[] args) throws IOException{
//创建socket的服务对象,参数为指定端口号
DatagramSocket ds=new DatagramSocket(8536);
//创建接收数据包、
byte[] data=new byte[1024];
DatagramPacket dp=new DatagramPacket(data,data.length);
ds.receive(dp);
//拆包
int length=dp.getLength();
InetAddress ip=dp.getAddress();
int port=dp.getPort();
System.out.println(“发送端的ip地址:”+ip+”发送端的端口号”+port);
System.out.println(new String(data,0,length));
ds.close();

}

}

原创粉丝点击