zoukankan      html  css  js  c++  java
  • UDP网络编程

    UDP 网络通信
     类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序。
     UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证
    UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。
     DatagramPacket 对象封装了UDP数据报,在数据报中包含了发送端的IP
    地址和端口号以及接收端的IP地址和端口号。
     UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和
    接收方的连接。如同发快递包裹一样。

    DatagramSocket 类的常用方法
     public DatagramSocket(int port)创建数据报套接字并将其绑定到本地主机上的指定端口。套接字将被
    绑定到通配符地址,IP 地址由内核来选择。
     public DatagramSocket(int port,InetAddress laddr)创建数据报套接字,将其绑定到指定的本地地址。
    本地端口必须在 0 到 65535 之间(包括两者)。如果 IP 地址为 0.0.0.0,套接字将被绑定到通配符地
    址,IP 地址由内核选择。
     public void close()关闭此数据报套接字。
     public void send(DatagramPacket p)从此套接字发送数据报包。DatagramPacket 包含的信息指示:将
    要发送的数据、其长度、远程主机的IP 地址和远程主机的端口号。
     public void receive(DatagramPacket p)从此套接字接收数据报包。当此方法返回时,DatagramPacket
    的缓冲区填充了接收的数据。数据报包也包含发送方的 IP 地址和发送方机器上的端口号。 此方法
    在接收到数据报前一直阻塞。数据报包对象的 length 字段包含所接收信息的长度。如果信息比包的
    长度长,该信息将被截短。
     public InetAddress getLocalAddress()获取套接字绑定的本地地址。
     public int getLocalPort()返回此套接字绑定的本地主机上的端口号。
     public InetAddress getInetAddress()返回此套接字连接的地址。如果套接字未连接,则返回null。
     public int getPort()返回此套接字的端口。如果套接字未连接,则返回-1。

     

     

     

     

    package com.atguigu.java1;
    
    import org.junit.Test;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    /**
     * UDP协议的网络编程
     * @author CH
     * @create 2021 下午 4:34
     */
    public class UDPTest {
    
        //发送端
        @Test
        public void sender() throws IOException {
    
            DatagramSocket socket = new DatagramSocket();
    
    
    
            String str = "我是UDP方式发送的导弹";
            byte[] data = str.getBytes();
            InetAddress inet = InetAddress.getLocalHost();
            DatagramPacket packet = new DatagramPacket(data,0,data.length,inet,9090);
    
            socket.send(packet);
    
            socket.close();
    
        }
        //接收端
        @Test
        public void receiver() throws IOException {
    
            DatagramSocket socket = new DatagramSocket(9090);
    
            byte[] buffer = new byte[100];
            DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
    
            socket.receive(packet);
    
            System.out.println(new String(packet.getData(),0,packet.getLength()));
    
            socket.close();
        }
    }

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    2018面试题
    输入对象和数量制造批量假数据
    前端监控和前端埋点方案设计--摘抄
    给页面上所有的a标签增加随机数每次点击保证最新
    给所有ajax请求增加随机数
    打印2018年的日历
    为图片添加文字 canvas
    地图搜索地图定位标注
    地图拖拽定位
    智能搜索地图
  • 原文地址:https://www.cnblogs.com/CCTVCHCH/p/14916712.html
Copyright © 2011-2022 走看看