• UDP通信



    DatagramPacket类   ------打包和拆包

    DataPatagramSocket--------发送接受

     相关方法

    //发送(打包)

    DatagramPacket(byt【】 buf,int length, InetAddress);

     

    接受【拆包】

    DatagramPacket(byte[] buf,int length)

     

    IP地址

    InetAddress getAddress();

     

    数据缓存

    byte【】 getDate();

     

     数据长度

    int getLongth();

     

    发送

    DatagramSocket();

     

    接受

    DatagramSocket(int port);

    相关实例

    l  UDP完成数据的发送

    /*

    * 发送端

     * 1,创建DatagramPacket对象,封装数据,接收的地址和端口

     * 2,创建DatagramSocket对象

    * 3,调用DatagramSocket中的send方法,发送数据包

     * 4,关闭资源DatagramSocket

     */

    publicclass UDPSend {

        publicstaticvoid main(String[] args) throws IOException {

            //1,创建DatagramSocket对象

            DatagramSocket sendSocket = new DatagramSocket();

            //2,创建DatagramPacket对象,并封装数据

            //public DatagramPacket(byte[] buf, int length, InetAddress address,  int port)

           //构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。

            byte[] buffer = "hello,UDP".getBytes();

            DatagramPacket dp = new DatagramPacket(buffer, buffer.length, InetAddress.getByName("192.168.75.58"), 12306);

            //3,发送数据

            //public void send(DatagramPacket p) 从此套接字发送数据报包

            sendSocket.send(dp);

            //4,释放流资源

            sendSocket.close();

        }

    }

     

    l  UDP完成数据的接收

    /*

     * UDP接收端

     *

     * 1,创建DatagramSocket对象,绑定端口号(要和发送端端口号一致)

     * 2,创建字节数组,接收发来的数据

     * 3,创建数据包对象DatagramPacket

     * 4,调用DatagramSocket对象方法receive(DatagramPacket dp)接收数据,数据放在数据包中

     * 5,拆包

          发送的IP地址

              数据包对象DatagramPacket方法getAddress()获取的是发送端的IP地址对象

              返回值是InetAddress对象

          接收到的字节个数

              数据包对象DatagramPacket方法getLength()

          发送方的端口号

              数据包对象DatagramPacket方法getPort()发送端口

     * 6,关闭资源

     */

    publicclass UDPReceive {

        publicstaticvoid main(String[] args) throws IOException {

            //1,创建DatagramSocket对象,并指定端口号

            DatagramSocket receiveSocket = new DatagramSocket(12306);

            //2,创建DatagramPacket对象, 创建一个空的仓库

            byte[] buffer = newbyte[1024];

            DatagramPacket dp = new DatagramPacket(buffer, 1024);

            //3,接收数据存储到DatagramPacket对象中

            receiveSocket.receive(dp);

            //4,获取DatagramPacket对象的内容

            //谁发来的数据  getAddress()

            InetAddress ipAddress = dp.getAddress();

            String ip = ipAddress.getHostAddress();//获取到了IP地址

            //发来了什么数据  getData()

            byte[] data = dp.getData();

            //发来了多少数据 getLenth()

            intlength = dp.getLength();

            //显示收到的数据

            String dataStr = new String(data,0,length);

            System.out.println("IP地址:"+ip+ "数据是"+ dataStr);

            //5,释放流资源

            receiveSocket.close();

        }

    }

     

     

  • 相关阅读:
    fetch的优点
    gitignore不起作用
    css动画和js动画区别
    工业家居气象空气环境质量监测仪记录数据甲醛PM2.5二氧化碳大气压温湿度
    摆脱淘宝、京东、拼多多内部引流消费规则,自建网站利用其完成支付
    语音朗读模块TTS文本变量实时转语音朗读科大讯飞XFS5152CE芯片AI
    PCB altium designer AD10 AD20 导出DWG CAD文件 过孔问题
    【Creator3】如何在3D场景中实现炫酷传送门,和简单的小地图功能,RenderTexture技术应用
    B站视频:【Creator3】好玩的编队代码 魔性排列停不下来 附源码及出处
    B站视频:《四图猜词》 Part3 | CocosCreator游戏开发教程
  • 原文地址:https://www.cnblogs.com/1997WY/p/10708697.html
Copyright © 2020-2023  润新知