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();
        }
    }

    三、输出

  • 相关阅读:
    「SDOI2018」物理实验
    「SDOI 2018」战略游戏
    「CodeChef Dec13 REALSET」 Petya and Sequence 循环卷积
    关于微信卡券投放code接口报错原因
    composer update maatwebsite/excel 之后 在linux机子上出现500解决方案
    开启mysql 服务【window】
    thinkphp在linux上部署环境(500情况)
    如何推广微信小程序到企业微信
    linux 阿里云远程连接mysql
    php7以上 不支持mcrypt_module_open方法问题【微信开放平台】
  • 原文地址:https://www.cnblogs.com/longesang/p/11375593.html
Copyright © 2011-2022 走看看