UDP完成数据的发送和接收的代码

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

UDP完成数据的发送

/*

* 发送端

 * 1,创建DatagramSocket对象

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

 * 3,发送数据

 * 4,释放流资源

 */

public class UDPSend {

    public static void main(String[] args) throws IOException {

        //1,创建DatagramSocket对象

        DatagramSocket sendSocket = new DatagramSocket();

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

        //public DatagramPacket(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,发送数据

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

        sendSocket.send(dp);

        //4,释放流资源

        sendSocket.close();

    }

}

 

UDP完成数据的接收

/*

 * UDP接收端

 *

 * 1,创建DatagramSocket对象

 * 2,创建DatagramPacket对象

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

 * 4,获取DatagramPacket对象的内容

 * 5,释放流资源

 */

public class UDPReceive {

    public static void main(String[] args) throws IOException {

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

        DatagramSocket receiveSocket = new DatagramSocket(12306);

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

        byte[] buffer = new byte[1024];

        DatagramPacket dp = new DatagramPacket(buffer, 1024);

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

        receiveSocket.receive(dp);

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

        //谁发来的数据  getAddress()

        InetAddress ipAddress = dp.getAddress();

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

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

        byte[] data = dp.getData();

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

        int length = dp.getLength();

        //显示收到的数据

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

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

        //5,释放流资源

        receiveSocket.close();

    }

}

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java实现UDP数据接收发送可以通过Java的DatagramSocket类来实现。以下是一个简单的示例代码数据发送: ```java try { // 创建DatagramSocket对象 DatagramSocket datagramSocket = new DatagramSocket(); // 要发送数据 String data = "Hello, world!"; byte[] bytes = data.getBytes(); // 创建DatagramPacket对象,指定数据数据长度、地址和端口号 DatagramPacket packet = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("127.0.0.1"), 8888); // 发送数据 datagramSocket.send(packet); } catch (IOException e) { e.printStackTrace(); } ``` 数据接收: ```java try { // 创建DatagramSocket对象并指定端口号 DatagramSocket datagramSocket = new DatagramSocket(8888); // 创建一个字节数组用于接收数据 byte[] bytes = new byte[1024]; // 创建DatagramPacket对象,指定数据数据长度 DatagramPacket packet = new DatagramPacket(bytes, bytes.length); // 接收数据 datagramSocket.receive(packet); // 处理接收到的数据 String data = new String(packet.getData(), 0, packet.getLength()); System.out.println("接收到的数据:" + data); } catch (IOException e) { e.printStackTrace(); } ``` 在上述代码中,通过DatagramSocket类创建了一个UDP的Socket,可以指定发送接收数据,以及目标地址和端口号。在发送数据时,通过DatagramPacket类创建了一个数据包,将数据数据长度、地址和端口号都封装进去,然后通过DatagramSocket的send方法将数据发送出去。在接收数据时,也是通过DatagramPacket类创建一个数据包,然后通过DatagramSocket的receive方法接收数据包,最后通过getData方法获取数据并进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值