UDP协议的Socket编程

UDP协议是无序的、不可靠的、无连接的,但是传输速度比较快,UDP协议以数据报作为数据传输的载体。

服务端:

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

        /**
         * 服务端接收客户端消息
         */
        //1、创建服务端DatagramSocket,指定端口
        DatagramSocket socket = new DatagramSocket(8800);

        //2、创建数据报,用于接受客户端发送的数据
        byte[] data = new byte[1024];
        DatagramPacket packet = new DatagramPacket(data,data.length);

        //3、接收客户端发送的数据
        System.out.println("-----服务端已经启动,等待客户端发送数据----");
        socket.receive(packet);//等待客户端发送消息

        //4、读取数据
        String info = new String(data,0,packet.getLength());
        System.out.println("从客户端获取到的信息为:" + info);

        /**
         * 服务端响应客户端
         */
        //1、定义客户端的地址、端口、数据
        InetAddress address = packet.getAddress();
        int port = packet.getPort();
        byte[] data1 = "欢迎你!".getBytes();

        //2、创建数据报,包含相应的信息
        DatagramPacket packet1 = new DatagramPacket(data1,data1.length,address,port);

        //3、响应客户端
        socket.send(packet1);

        //4、关闭资源
        socket.close();

    }
}

客户端:

public class UDPClient {
    public static void main(String [] args) throws IOException {
        /**
         * 客户端向服务端发送消息
         */
        //1、定义服务器的地址、端口号、数据
        InetAddress address = InetAddress.getByName("localhost");//因为服务器是本机,所以才能用“localhost”
        int port = 8800;
        byte[] data = "用户名:ljsu;密码:245245".getBytes();

        //2、创建数据报,包含需要发送的数据
        DatagramPacket packet = new DatagramPacket(data,data.length,address,port);

        //3、创建DatagramSocket对象
        DatagramSocket socket = new DatagramSocket();

        //4、想服务器发送数据
        socket.send(packet);

        /**
         * 客户端接受服务端响应信息
         */
        //1、创建数据报,用于接受服务器响应信息
        byte[] data1 = new byte[1024];
        DatagramPacket packet1 = new DatagramPacket(data1,data.length);

        //2、接收服务端端响应的数据
        System.out.println("-----等待服务端响应消息----");
        socket.receive(packet1);

        //3、读取数据
        String info = new String(data1,0,packet1.getLength());
        System.out.println("服务端响应的信息为:" + info);

        //4、关闭资源
        socket.close();
    }
}

你可能感兴趣的:(UDP协议的Socket编程)