Socket网络编程--UDP (java)

60 阅读1分钟

UDP协议:面向无连接 安全系数低 不需要类似TCP协议的三次握手 但传输速度快

本次就用java来演示UDP传输
UdpClient:

public class UdpClient {
    public static void main(String[] args) throws IOException {
    
        //创建Socket放循环外 避免资源浪费
        DatagramSocket datagramSocket = new DatagramSocket();
        while (true){
            System.out.println("请输入你要发送的内容");
            Scanner scanner = new Scanner(System.in);
            String context=scanner.nextLine();

            //如果用户输入exit 则退出
            if (context.equals("exit")){
                System.out.println("退出客户端");
                break;
            }


            byte[] msg=context.getBytes(StandardCharsets.UTF_8);
            InetAddress inetAddress=InetAddress.getByName("mayikt.server.com");
            int port=8080;
            DatagramPacket datagramPacket = new  DatagramPacket(msg,msg.length,inetAddress,port);
            datagramSocket.send(datagramPacket);
            System.out.println("发送成功");


        }
        datagramSocket.close(); //关闭释放资源
    }
}

UdpServer:

public class UdpServer {
    static int count=0;
    public static void main(String[] args) throws IOException {
        int port=8080;
        DatagramSocket datagramSocket = new DatagramSocket(port);

        while (true){
            //接收1000次之后退出循环
            if (count==1000){
                break;
            }
            byte[] bytes=new byte[1024];
            DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length);
            System.out.println("开始接收数据");
            datagramSocket.receive(datagramPacket);
            System.out.println("接收到数据");

            byte[] data1=datagramPacket.getData();
            String msg=new String(data1);
            System.out.println(msg);
            count++;

        }
        datagramSocket.close();

    }
}

实现效果为 服务器端先运行之后 会一直等待客户端发送数据 客户端运行之后可以一直发送数据给服务器端