UDP传输:
发送端思路:
1:建立udp的socket服务
2:将要发送的数据封装成数据包
3:通过udp的socket服务,将数据包发送出
4:关闭资源
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- import java.net.SocketException;
- import java.net.UnknownHostException;
- /*
- * UDP协议发送数据:
- * A:创建发送端Socket对象
- * B:创建数据,并把数据打包
- * C:调用Socket对象的发送方法发送数据包
- * D:释放资源
- */
- public class SendDemo {
- public static void main(String[] args) throws IOException {
- //创建发送端Socket对象
- // DatagramSocket()
- DatagramSocket ds = new DatagramSocket();
- //创建数据并把数据打包
- // DatagramPacket(byte[] buf, int length, InetAddress address, int port)
- //创建数据
- byte[] bys = "hello,udp,我来了".getBytes();
- //长度
- int length = bys.length;
- //IP地址对象
- InetAddress address = InetAddress.getByName("192.168.0.116");
- //端口
- int port = 10086;
- DatagramPacket dp = new DatagramPacket(bys, length,address,port);
- //调用socket对象的发送方法发送数据包
- // public void send(DatagramPacket p)
- ds.send(dp);
- //释放资源
- ds.close();
- }
- }
复制代码
接收端思路:
1:建立udp的socket服务.
2:通过receive方法接收数据
3:将收到的数据存储到数据包对象中
4:通过数据包对象的功能来完成对接收到数据进行解析.
5:可以对资源进行关闭
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- import java.net.SocketException;
- /*
- * UDP协议接收数据:
- * A:创建接收端Socket对象
- * B:创建一个数据包(接收容器)
- * C:调用Socket对象的接收方法接收数据
- * D:解析数据包,并显示在控制台
- * E:释放资源
- */
- public class ReceiveDemo {
- public static void main(String[] args) throws IOException {
- // 创建接收端Socket对象
- // DatagramSocket(int port)
- DatagramSocket ds = new DatagramSocket(10086);
- // 创建一个数据包(接收容器)
- // DatagramPacket(byte[] buf, int length)
- byte[] bys = new byte[1024];
- int length = bys.length;
- DatagramPacket dp = new DatagramPacket(bys, length);
- // 调用socket对象的接收方法接收数据
- // public void receive(DatagramPacket p)
- ds.receive(dp);// 阻塞式
- // 解析数据包,并显示在控制台
- // 获取对方的ip
- // public InetAddress getAddress()
- InetAddress address = dp.getAddress();
- String ip = address.getHostAddress();
- // public byte[] getData():获取数据缓冲区
- // public int getLength():获取数据的实际长度
- byte[] bys2 = dp.getData();
- int len = dp.getLength();
- String s = new String(bys2, 0, len);
- System.out.println(ip + "传递的数据是:" + s);
- //释放资源
- ds.close();
- }
- }
复制代码 |
|