UDP编程

来源:互联网 发布:全天重庆时时计划数据 编辑:程序博客网 时间:2024/06/05 04:55

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是一种数据传输协议。UDP协议是一种无连接协议,因此UDP传输数据的时候可能会导致数据的丢失。例如,服务器没有打开的情况下,数据会丢失。UDP协议使用的范围十分的广泛,例如短信发送。
使用方式如下:
1、创建一个UDP服务器

public class UdpServer {    public static void main(String[] args) {        // 创建一个服务器        DatagramSocket server = null;        try {            try {                // 实例化服务器,初始化端口                server = new DatagramSocket(8888,InetAddress.getByName("127.0.0.1"));            } catch (UnknownHostException e1) {                e1.printStackTrace();            }            //根据接收到的报文,定义接收的字节数组            byte[] recv = new byte[server.getReceiveBufferSize()];            //将接收到的数据进行打包            DatagramPacket packet = new DatagramPacket(recv, recv.length);            try {                //接收数据                server.receive(packet);                //转字符串                String recvString = new String(recv, 0, packet.getLength());                //打印                System.out.println(recvString);                //将接收到的报文发送回去,如果需要添加新的东西,则需要重新定义数据包DatagramPacket                server.send(packet);            } catch (IOException e) {                e.printStackTrace();            }        } catch (SocketException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            if (server != null && !server.isClosed()) {                server.close();            }        }    }}

2、创建一个UDP客户端

public class UdpClient {    public static void main(String[] args) {        // 创建一个UDP客户端        DatagramSocket client = null;        try {            // 对客户端进行实例化            client = new DatagramSocket();            // 需要发送的内容            String msg = "Hello World!";            // 将需要发送的内容转成字节数组            byte[] sendData = msg.getBytes();            try {                // 发送的地址                InetAddress address = InetAddress.getByName("127.0.0.1");                // 发送的端口                int port = 8888;                // 将需要发送的内容进行打包                DatagramPacket packet = new DatagramPacket(sendData, sendData.length, address, port);                try {                    // 客户端发送数据包                    client.send(packet);                    //接收服务器发送回来的数据包                    client.receive(packet);                    System.out.println(new String(sendData));                } catch (IOException e) {                    e.printStackTrace();                }            } catch (UnknownHostException e) {                e.printStackTrace();            }        } catch (SocketException e) {            e.printStackTrace();        } finally {            if (client != null && !client.isClosed()) {                client.close();            }        }    }}

在进行测试的时候,需要先打开UdpServer,然后再打开UdpClient,否则会造成数据的丢失。

原创粉丝点击