发送端:
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- public class UDPSend {
- /**
- * @param args
- * @throws IOException
- */
- public static void main(String[] args) throws IOException {
-
- System.out.println("udp 发送端 run");
-
- /*
- * 通过查阅文档,了解到用于UDP传输协议的对象是DatagramSocket。
- *
- * 通过udp的协议发送一段文本数据。
- * 思路:
- * 1,需要先建立udp的socket。它具备者发送或者接收功能。
- * 2,将数据封装到数据包中。数据包对象是DatagramPacket。
- * 3,使用socket对象的send方法将数据包发送出去。
- * 4,关闭资源。
- */
-
- // 1,需要先建立udp的socket。它具备者发送或者接收功能。
- DatagramSocket ds = new DatagramSocket();
-
- // 2,将数据封装到数据包中。数据包对象是DatagramPacket。
- String text = "这是传送的数据啊:荆志宝";
- byte[] buf = text.getBytes();//将数据转成字节数组。
- // 将字节数组封装到数据包中。
- DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 10000);
-
- // 3,使用socket对象的send方法将数据包发送出去。
- ds.send(dp);
-
- // 4,关闭资源。
- ds.close();
-
- }
- }
复制代码
接收端:
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- public class UDPRece {
- /**
- * @param args
- * @throws IOException
- */
- public static void main(String[] args) throws IOException {
- System.out.println("udp 接收端 run");
- /*
- * 定义一个udp的接收端。接收发送过来的数据。并显示在屏幕上。
- * 思路:
- * 1,先有udp socket服务。而且记住:接收端一定要明确端口。否则收不到数据。
- * 2,接收数据。之前先将数据存储到数据包中。
- * 3,先定义数据包。
- * 4,通过数据包对象获取数据包的内容,发送端的ip。发送端的端口,发送过来的数据。
- * 5,关闭资源。
- *
- */
- // 1,先有udpsocket服务。
- DatagramSocket ds = new DatagramSocket(10000);
-
- // 2,接收数据。之前先将数据存储到数据包中。
- // 3,先定义数据包。
- byte[] buf = new byte[1024];
- DatagramPacket dp = new DatagramPacket(buf, buf.length);
- ds.receive(dp);//阻塞
- // 4,通过数据包对象获取数据包的内容,发送端的ip。发送端的端口,发送过来的数据。
- String ip = dp.getAddress().getHostAddress();
- int port = dp.getPort();
- String text = new String(dp.getData(),0,dp.getLength());
-
- System.out.println(ip+":"+port+":"+text);
- // 5,关闭资源。
- ds.close();
- }
- }
复制代码
|
|