三、UDP实现简单的socket通信实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014155085/article/details/83819252

1.服务器端代码

package udp;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * 类功能描述:服务器端,先启动服务器端后启动客户端
 *
 * @author:***
 * @createTime:2018/11/7 10:07
 */
public class Server {
    public static void main(String[] args) {
        try {
            /**
             * 接收客户端数据
             */
            //1.创建服务器端datagramSocket
            DatagramSocket socket = new DatagramSocket(18081);
            //2.创建数据报,用于接收客户端发送的数据
            byte[] data = new byte[1024];
            DatagramPacket packet = new DatagramPacket(data, data.length);
            System.out.println("服务器已经启动,等待客户端发送数据:");
            //3.接收客户端发送的数据(接收数据报之前一直阻塞)
            socket.receive(packet);
            //4.读取客户端发送的数据
            String info = new String(data, 0, packet.getLength());
            System.out.println("接收客户端发送信息为:" + info);

            /**
             * 向客户端响应数据
             */
            InetAddress address = packet.getAddress();
            byte[] resData = "服务器响应信息".getBytes();
            DatagramPacket resPacket = new DatagramPacket(resData, resData.length, address, packet.getPort());
            socket.send(resPacket);
            System.out.println("向客户端发送数据成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

2.客户端代码

package udp;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;

/**
 * 类功能描述:客户端
 *
 * @author:***
 * @createTime:2018/11/7 10:14
 */
public class Client {
    public static void main(String[] args) {
        try {
            /**
             * 向服务器发送信息
             */
            //1.定义服务器地址 端口 数据
            InetAddress address = InetAddress.getLocalHost();
            byte[] data = "客户端发往服务器的数据".getBytes();
            //2.创建数据报
            DatagramPacket packet = new DatagramPacket(data, data.length, address, 18081);
            //4.向服务器发送数据
            DatagramSocket socket = new DatagramSocket();
            socket.send(packet);
            System.out.println("向服务器发送数据成功!");
            /**
             * 接收服务器响应信息
             */
            byte[] reqData = new byte[1024];
            DatagramPacket reqPacket = new DatagramPacket(reqData, reqData.length);
            socket.receive(reqPacket);
            String info = new String(reqData, 0, reqPacket.getLength());
            System.out.println("接收服务器的响应数据为:" + info);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/u014155085/article/details/83819252