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

    DatagramPacket类:该类的实例对象就相当于一个集装箱,用于封装UDP通信中发送或者接收的数据
    构造方法: 

           DatagramPacket(byte[ ] buf , int length)构造DatagramPacket,用来接收长度为length的数据包
           DatagramPacket(byte[ ] buf ,int.length , InetAddress address , int port)构造数据报包,用来将长度为length的包发送到指定主机上的指定端口
    常用方法:

        InerAddress   getAddress() 返回某台机器的ip地址
         int        getPort() 返回某台主机的端口号
         byte[ ]       getData() 返回数据缓冲区
         int        getLength() 返回将要发送或者接收到的数据长度
    DatagramSocket类:DatagramSocket类的作用就类似于码头,使用这个类的实例对象就可以发送和接收DatagramPacket数据包
    构造方法:

          DatagramSocket()  该构造方法用于创建发送端的DatagramSocket对象,在创建DatagramSocket对象时,并没有指定端口号,

                  此时,系统会分配一个没有被其它网络程序所使用的端口号

           DatagramSocket(int port) 创建接收端的DatagramSocket对象时,必须要指定一个端口号
    常用方法:

          receive(DatagramPacket p)  接收数据包
           send(DatagramPacket p)  发送数据包

    代码展示:

    import java.io.IOException;
    import java.net.*;
    import java.util.Scanner;
    public class UDPSend {
    //发送端
    public static void main(String[] args) throws IOException {
    //创建Scoket对象
    DatagramSocket ds=new DatagramSocket();
    Scanner sc=new Scanner(System.in);
    while(true){
    //创建数据包对象,封装要发送的数据,明确接口端的IP和端口
    byte[] bytes=sc.next().getBytes();
    InetAddress inet=InetAddress.getByName("127.0.0.1");
    DatagramPacket dp=new DatagramPacket(bytes,bytes.length,inet,6666);
    //发送数据包对象
    ds.send(dp);
    }
    }
    }

    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.SocketException;
    public class UDPRecieve {
    //接收端
    public static void main(String[] args) throws IOException {
    //创建字节数组接收数据
    byte[] bytes=new byte[1024];
    //创建socket对象明确端口号
    DatagramSocket ds=new DatagramSocket(6666);
    while(true){
    //创建数据包对象
    DatagramPacket dp=new DatagramPacket(bytes,bytes.length);
    //接收数据
    ds.receive(dp);
    //拆包
    //获取数组长队
    int length=dp.getLength();
    //获取发送端IP地址
    String ip=dp.getAddress().getHostAddress();
    //获取端口号
    int port=dp.getPort();
    System.out.println("ip地址为"+ip+",端口号为"+port+",发送内容为:"+new String(bytes,0,length));
    }
    }
    }

      

  • 相关阅读:
    synchronized优化手段:锁膨胀、锁消除、锁粗化和自适应自旋锁...
    synchronized 优化手段之锁膨胀机制!
    synchronized 加锁 this 和 class 的区别!
    SpringBoot中时间格式化的5种方法!
    阿里云ddns shell 脚本
    adb 备份apk
    paddlex_gui_win10(飞浆)
    cuda 版本对照
    PaddleHub
    yum 查找库对应的包
  • 原文地址:https://www.cnblogs.com/nbkls/p/12781285.html
Copyright © 2011-2022 走看看