您的位置:首页 > 理论基础 > 计算机网络

UDP网络程序

2017-02-20 12:21 85 查看
要实现UDP通信需要创建一个发送端程序和一个接收端程序,很明显,在通信时只有接收端程序先运行,才能避免因发送端发送的数据无法接收,而造成数据丢失。因此,首先需要来完成接收端程序的编写。

1. 
UDP完成数据的发送

/*

* 发送端

 * 1,创建DatagramSocket对象

 * 2,创建DatagramPacket对象,并封装数据

 * 3,发送数据

 * 4,释放流资源

 */

publicclass UDPSend
{

    publicstaticvoid
main(String[] args) throwsIOException {

       
//1,创建DatagramSocket对象

        DatagramSocketsendSocket =new
DatagramSocket();

       
//2,创建DatagramPacket对象,并封装数据

       
//publicDatagramPacket(byte[]
buf,int length, InetAddress address, int
port)

       
//构造数据报包,用来将长度为 length的包发送到指定主机上的指定端口号。

       
byte[] buffer ="hello,UDP".getBytes();

        DatagramPacket dp =new
DatagramPacket(buffer, buffer.length,InetAddress.getByName("192.168.75.58"),
12306);

       
//3,发送数据

       
//publicvoid send(DatagramPacket p)
从此套接字发送数据报包

        sendSocket.send(dp);

       
//4,释放流资源

        sendSocket.close();

    }

}

 

2.UDP完成数据的接收

/*

 * UDP接收端

 *

 * 1,创建DatagramSocket对象

 * 2,创建DatagramPacket对象

 * 3,接收数据存储到DatagramPacket对象中

 * 4,获取DatagramPacket对象的内容

 * 5,释放流资源

 */

publicclass UDPReceive
{

    publicstaticvoid
main(String[] args)throws
IOException {

       
//1,创建DatagramSocket对象,并指定端口号

        DatagramSocketreceiveSocket
=new DatagramSocket(12306);

       
//2,创建DatagramPacket对象,创建一个空的仓库

       
byte[]buffer
=newbyte[1024];

        DatagramPacketdp=new
DatagramPacket(buffer,1024);

       
//3,接收数据存储到DatagramPacket对象中

       
receiveSocket.receive(dp);

       
//4,获取DatagramPacket对象的内容

       
//谁发来的数据 getAddress()

        InetAddressipAddress =dp.getAddress();

        Stringip=ipAddress.getHostAddress();//获取到了IP地址

       
//发来了什么数据 getData()

       
byte[]data
=dp.getData();

       
//发来了多少数据 getLenth()

       
intlength
= dp.getLength();

       
//显示收到的数据

        StringdataStr =new
String(data,0,length);

        System.out.println("IP地址:"+ip+"数据是"+dataStr);

       
//5,释放流资源

       
receiveSocket.close();

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: