/*
* Udp发送数据
*
* 1、建立Udp Socket 服务
* 2、提供数据,并将数据封装到包中
* 3、通过Socket的数据发送功能,将数据包发送出去
* 4、关闭资源
*/
package com.langsin.udp; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UdpSend { public static void main(String[] args) throws Exception { //1 DatagramSocket ds=new DatagramSocket(11002); //这里可以指定发送端的端口号,否则系统将自动分配 //2 byte[] buf="Hello World!!".getBytes(); DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.197"),10000 ); //3 ds.send(dp); //4 ds.close(); } }
/*
* Udp的接受
*
* 1、建立Udp 的 Socket 服务
* 2、定义一个数据包用于存储接收到的字节数据
* 3、通过socket 的 receive 方法将接收到的数据存储到数据包中
* 4、通过数据包的特有功能,将这些数据取出
* 5、关闭资源
*
*/
package com.langsin.udp; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UdpRece { public static void main(String[] args) throws Exception{ //1 DatagramSocket ds=new DatagramSocket(10000); //2 byte[] buf=new byte[1024]; DatagramPacket dp=new DatagramPacket(buf, buf.length); //3 ds.receive(dp); //4 String ip=dp.getAddress().getHostAddress(); int port=dp.getPort(); //得到发送端的端口号 String data=new String(dp.getData(),0,dp.getLength()); System.out.println(ip+" "+data+" "+port); //5 ds.close(); } }
因为udp 的不可靠传输,所以接收端如果接收不到数据包,数据就会被丢弃,因此应该先运行接收端。