java网络编程(3)——UDP

  UDP在java中主要使用DatagramSocket来实现通讯,数据一般是通过DatagramPacket来封装;

  发送方只需指定接受方的地址和端口,然后通过send()方法就可以把封装在DatagramPacket中数据发送过去!

  而接收方只需同样利用DatagramSocket和一个DatagramPacket来接收数据就可以了,接受只需指定接受端口就可以了,具体如下:

  发送方:

  

package com.seven.exercise1;



import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;



public class UdpSend {



    

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

        

        //1.udp服务

        DatagramSocket ds = new DatagramSocket();

        

        //2.封装数据到DatagramPacket

        byte[] data = "hello udp socket".getBytes();

        

        InetAddress inetAddress = InetAddress.getByName("127.0.0.1");//地址.

        DatagramPacket datagramPacket = new DatagramPacket(data, data.length, inetAddress, 10000);

        

        //3.发送数据

        ds.send(datagramPacket);

        

        //4.关闭

        ds.close();

        

    }

}

  接受方;

package com.seven.exercise1;



import java.net.DatagramPacket;

import java.net.DatagramSocket;



public class UdpReceive {

    

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

        //1.新建接收方

        DatagramSocket datagramSocket = new DatagramSocket(10000);

        //2.绑定接收package

        byte[] b  = new byte[1024];

        DatagramPacket dp = new DatagramPacket(b,b.length);

        //3.接收数据

        datagramSocket.receive(dp);

        //4.接收到数据的话那就打印出来

        String data = new String(dp.getData(),0,dp.getLength());

        System.out.println(dp.getAddress().getHostAddress() +"----->"+ data);

        //5.关闭;

        datagramSocket.close();

        

    }



}

  因为UDP是面向无连接的,所以无论怎么运行都可以,但是为了能够接受到数据,我们要把接受方先运行起来,再去运行发送方,这样才可以看出效果,不然的话数据包丢失也就看不出什么效果了==。

你可能感兴趣的:(java网络编程)