zoukankan      html  css  js  c++  java
  • 37.1 net-- udp传输

    一、打开接收端

    package day35_net_网络编程.udp传输;
    
    import java.io.IOException;
    import java.net.*;
    
    /*
     * 使用UDP协议接收数据
            创建接收端Socket对象
            接收数据
            解析数据
            输出数据
            释放资源
    
     */
    public class UdpReceiveDate {
        public static void main(String[] args) throws IOException {
            int port = 8888;
            InetAddress address = InetAddress.getLocalHost();
    
            //1.创建接收端Socket对象
            DatagramSocket ds = new DatagramSocket(8888,address);
    
            //2.接收数据 void receive(DatagramPacket p) 从此套接字接收数据报包。
            //DatagramPacket(byte[] buf, int length) 构造 DatagramPacket,用来接收长度为 length 的数据包。
            byte[] byts = new byte[1024];
            int length = byts.length;
    
            DatagramPacket dp = new DatagramPacket(byts,length);
    
            System.out.println(1);
            ds.receive(dp);//阻塞
            System.out.println(2);
    
            //3.输出数据
            // byte[] getData() 返回数据缓冲区。
    
            byte[] byt = dp.getData();
            int len = dp.getLength();
            String data = new String(byt,0,len);
    
            System.out.println("send -->"+ address.getHostName() + "---" + data);
    
            //4.释放资源
            ds.close();
    
        }
    }

    二、发送端,发送数据

    package day35_net_网络编程.udp传输;
    
    import java.io.IOException;
    import java.net.*;
    
    /*
     * 使用UDP协议发送数据
            创建发送端Socket对象
            创建数据并打包
            发送数据
            释放资源
     *
     * DatagramSocket:此类表示用来发送和接收数据,基于UDP协议的
     *
     * DatagramSocket() :创建Socket对象并随机分配端口号
     * DatagramSocket(int port) :创建Socket对象并指定端口号
     *
     * * UDP协议收发数据的注意事项:
     *         端口号错误,数据可以正常发出,不会出现异常,但是收不到数据(udp无连接,只管发不管能不能收到)
     *         Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
     *             端口号已经绑定了
     */
    public class UdpSendDate {
        public static void main(String[] args) throws IOException {
    
            //1.创建发送端Socket对象,构造方法DatagramSocket(int port, InetAddress laddr)
            DatagramSocket ds = new DatagramSocket();
    
            //2.发送数据void send(DatagramPacket p)
            //发包构造方法:DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
            String s = "hello udp 0000";
            byte[] byts = s.getBytes();
    //        int length = 1024;
            int length = byts.length;
            int port = 8888;
            //使用本地地址发送数据
            InetAddress address = InetAddress.getLocalHost();
            DatagramPacket dp = new DatagramPacket(byts,length,address,port);
    
            //3.发送数据
            ds.send(dp);
    
            //4.释放资源
            ds.close();
        }
    }

    三、输出

  • 相关阅读:
    Qt ------ QPainter 和控件组件的重绘
    Qt error ------ no matching function for call to QObject::connect(QSpinBox*&, <unresolved overloaded function type>, QSlider*&, void (QAbstractSlider::*)(int))
    DHCP 服务器功能
    matlab --- plot画图
    网站跨域解决方案有哪些
    分布式Session一致性解决方案有哪些?
    博客收集
    idea快捷键
    Linux打包、压缩与解压详解
    lastIndex()与IndexOf()的区别
  • 原文地址:https://www.cnblogs.com/longesang/p/11375593.html
Copyright © 2011-2022 走看看