• UDP


    • 基于UDP协议的Socket网络编程实现

    • 不需要IO流实现数据传输,数据被打包成包裹发送到目的地(注意传输的包裹不要太大)

    • 用到的两个类:

      1. DatagramPacket
      2. DatagramSocket
    • 代码实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetSocketAddress;


    * 发送端
    *
    * 1. 使用DatagramSocket(int port)指定端口,创建发送端
    * 2. 准备数据(一定要转成字节数组)
    * 3. 将字节数组封装成DatagramPacket包裹,需要指定目的地
    * 4. 用send(DatagramPacket p)
    * 5. 释放资源
    */
    public class {
    public static void main(String[] args) throws Exception{
    // 1.
    DatagramSocket client = new DatagramSocket(8888);

    // 2. 比如发送一段文字
    String msg = "你好!";
    byte[] datas = msg.getBytes();

    // 3. 指定的端口要是接收端创建时指定的端口
    DatagramPacket packet = new DatagramPacket(datas,0,datas.length,
    new InetSocketAddress("localhost",6666));

    // 4.
    client.send(packet);

    // 大专栏  UDP 5.
    client.close();

    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;


    * 接收端
    * 1. 使用DatagramSocket(int port)指定端口,创建接收端
    * 2. 准备容器,封装成DatagramPacket包裹,用来接收发送端的包裹
    * 3. 用seceive(DatagramPacket p)阻塞式的接收包裹
    * 4. 分析数据,比如用getData()和getLengeth()方法
    * 5. 释放资源
    */
    public class UDP_Server {
    public static void main(String[] args) throws Exception{
    // 1.
    DatagramSocket server = new DatagramSocket(6666);

    // 2.
    byte[] datas = new byte[1024*10];
    DatagramPacket packet = new DatagramPacket(datas,0,datas.length);

    // 3.
    server.receive(packet);

    // 4.
    byte[] flush = packet.getData();
    int len = packet.getLength();
    System.out.println(new String(flush,0,flush.length));

    // 5.
    server.close();
    }
    }

  • 相关阅读:
    npm, node, pm2 使用笔记
    没加证书的域名通过https访问,错误的访问到有证书的域名项目--已解决
    mysql数据库大表加索引
    上传大文件失败
    ifame 与父页面进行数据交互(跨域)
    windows平台编译PHP及扩展 和 踩过的坑
    vim 使用笔记
    git 在pull/push指定密钥文件
    记一次使用Xshell登陆提示所选用户密钥未在远程主机上注册
    学习网站与参考文档
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12376249.html
Copyright © 2020-2023  润新知