zoukankan      html  css  js  c++  java
  • UDP通信

    1、UDP概述

    UDP(User Datagram Protocol):用户数据报协议,是一种面向无连接的协议,在通信时发送端和接收端不用建立连接。

    2、DatagramPacket

    DatagramPacket用于封装数据,在接收端和发送端的DatagramPacket方法有所不同,接收端的构造方法只需要接受一个字节数组来存放接收到的数据,而发送端的构造方法不但要接受发送数据要存放的字节数组,还需要指定发送端IP地址和端口号。

    接收端构造方法:

    DatagramPacket(byte[] buf, int length):构造DatagramPacket,用来接受长度为length的数据包。

    发送端构造方法:

    DatagramPacket(byte[] buf, int length, InteAddress address, int port):构造数据包,用来将长度为length的包发送到指定主机上的指定端口号。

    常用方法:

    • InetAddress getAddress():返回某台机器的IP地址,此数据报将要发往该机器或者是从该机器接收到的。
    • int getPort():返回某台远程主机的端口号,此数据报将要发往该主机或者是从该主机接受到的。
    • getData():返回数据缓冲区。
    • int getLength():返回将要发送或接收到的数据的长度。

    3、DatagramSocket

    DatagramSocket类的常用构造方法:

    • DatagramSocket():构造数据报套接字并将其绑定到本地主机上的任何可用的端口。
    • DatagramSocket():构造数据报套接字并将其绑定到本地主机上的指定端口。

    常用方法:

    • void receive(DatagramPacket p):从此套接字接收数据报包。
    • void send(DatagramPacket p):从此套接字发送数据报包。

    4、UDP网络程序

    UDP接收端

     1 package udp;
     2 
     3 import java.io.IOException;
     4 import java.net.DatagramPacket;
     5 import java.net.DatagramSocket;
     6 import java.net.InetAddress;
     7 
     8 /**
     9  * <p>Description:UDP接收端 </p>
    10  * @author Administrator
    11  * @date 2018年11月6日下午3:17:01
    12  */
    13 public class UDPReceive {
    14 
    15     public static void main(String[] args) throws IOException {
    16         // 创建DatagramSocket对象,并指定端口号
    17         DatagramSocket ds = new DatagramSocket(6000);
    18         // 创建一个空仓库
    19         byte[] buffer = new byte[1024];
    20         // 创建DatagramPacket对象
    21         DatagramPacket dp = new DatagramPacket(buffer, 1024);
    22         // 接受数据
    23         ds.receive(dp);
    24         // 获取DatagramPacket对象内容
    25         InetAddress ipAddress = dp.getAddress();
    26         String ip = ipAddress.getHostAddress();
    27         // 解析数据
    28         byte[] data = dp.getData();
    29         int length = dp.getLength();
    30         // 显示接受到的数据
    31         String dataStr = new String(data, 0, length);
    32         System.out.println("ip地址:" + ip + "数据是:" + dataStr);
    33         // 释放资源
    34         ds.close();
    35     }
    36 
    37 }

    UDP发送端

     1 package udp;
     2 
     3 import java.io.IOException;
     4 import java.net.DatagramPacket;
     5 import java.net.DatagramSocket;
     6 import java.net.InetAddress;
     7 
     8 /**
     9  * <p>Description:UDP发送端 </p>
    10  * @author Administrator
    11  * @date 2018年11月6日下午3:07:53
    12  */
    13 public class UDPSend {
    14 
    15     public static void main(String[] args) throws IOException {
    16         // 创建DatagramSocket对象
    17         DatagramSocket ds = new DatagramSocket();
    18         // 构造数据报包,用来将长度为length的包发送到指定主机的指定端口号上
    19         byte[] buffer = "hello,UDP".getBytes();
    20         // 创建InetAddress对象,封装自己的IP地址
    21         InetAddress inet = InetAddress.getByName("127.0.0.1");
    22         // 创建DatagramPacket对象
    23         DatagramPacket dp = new DatagramPacket(buffer, buffer.length, inet, 6000);
    24         // 发送数据
    25         ds.send(dp);
    26         // 释放资源
    27         ds.close();
    28     }
    29 
    30 }
  • 相关阅读:
    Sample XPS Documents Download
    触发器中的inserted表和deleted表
    Using freewheel.labs.autodesk.com to auto generate preview images of DWF files on your web site
    解除SQL对组件"Ad Hoc Distributed Queries"的"STATEMENT'OpenRowset OpenDatasource"的访问
    读写xps
    XPS文件,在Windows XP下的打开查看阅读和打印方法。
    Learning to Reference Inserted and Deleted Tables
    Get value from updated, inserted and deleted
    Reinstall Microsoft Helper Viewer
    如何查找文件的IFilter
  • 原文地址:https://www.cnblogs.com/alphajuns/p/9915602.html
Copyright © 2011-2022 走看看