网络通讯--协议--udp

网络通讯--协议--udp

UDP demo(java)

  • 环境 1.8
  • 客户端和服务端不要放到一个线程中去启动!
//udp 服务端
public class UdpServer{
    public static void server(){
        try {
            InetAddress address = InetAddress.getLocalHost();//这个ip 地址,就是cmd使用ipconfig命令中ipv4地址
            int port = 8080;

            //创建DatagramSocket对象 socket对象
            DatagramSocket socket = new DatagramSocket(port, address);

            byte[] buf = new byte[1024];  //定义byte数组
            DatagramPacket packet = new DatagramPacket(buf, buf.length);  //创建DatagramPacket对象
            System.out.println("服务端启动:" +address.getHostAddress()+":"+ port);
            socket.receive(packet);  //通过套接字接收数据
            System.out.println("服务端接收完成:");
            String getMsg = new String(buf, 0, packet.getLength());
            System.out.println("客户端发送的数据为:" + getMsg);

            //从服务器返回给客户端数据
            InetAddress clientAddress = packet.getAddress(); //获得客户端的IP地址
            int clientPort = packet.getPort(); //获得客户端的端口号
            SocketAddress sendAddress = packet.getSocketAddress();
            String feedback = "Received";
            byte[] backbuf = feedback.getBytes();
            DatagramPacket sendPacket = new DatagramPacket(backbuf, backbuf.length, sendAddress); //封装返回给客户端的数据
            socket.send(sendPacket);  //通过套接字反馈服务器数据

            socket.close();  //关闭套接字

        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch(IOException e) {
            e.printStackTrace();
        }

    }
}
//客户端
public class UdpClent{
    public static void send(){
        String serverPosrt = "127.0.0.1";//这个ip 地址,就是cmd使用ipconfig命令中ipv4地址
        String msg = "Hello, World";
        byte[] buf = msg.getBytes();
        try {
            InetAddress address = InetAddress.getByName("");  //服务器地址
            int port = 8080;  //服务器的端口号
            //创建发送方的数据报信息
            DatagramPacket dataGramPacket = new DatagramPacket(buf, buf.length, address, port);

            DatagramSocket socket = new DatagramSocket();  //创建套接字
            socket.send(dataGramPacket);  //通过套接字发送数据

            //接收服务器反馈数据
            byte[] backbuf = new byte[1024];
            DatagramPacket backPacket = new DatagramPacket(backbuf, backbuf.length);
            socket.receive(backPacket);  //接收返回数据
            String backMsg = new String(backbuf, 0, backPacket.getLength());
            System.out.println("服务器返回的数据为:" + backMsg);

            socket.close();

        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
//启动服务端
public static void main(String[] args) {
       UdpServer.server();
    }
    //启动客户端请求
public static void main(String[] args) {
        UdpClent.send();
    }

猜你喜欢

转载自blog.csdn.net/TianLiaoFeiJue/article/details/83743206