IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Java之基于udp协议的datagramSocket通信 -> 正文阅读

[网络协议]Java之基于udp协议的datagramSocket通信

DatagramSocket是使用UDP协议的Socket,它的作用是接收和发送数据包.
DatagramSocket对象的常用构造方法

//创建一个数据包套接字,绑定到本机上任意一个可用的端口
DatagramSocket()
//通过指定的套接字地址来创建一个数据包套接字
DatagramSocket(SocketAddress)
//指定本地的一个端口,以此来创建数据包套接字
DatagramSocket(int)
//创建一个DatagramSocket对象,并绑定到指定的地址和端口上
DatagramSocket(int, InetAddress)

DatagramSocket对象的发送、接收方法

public void send(DatagramPacket p) throws IOException  {.....}

public synchronized void receive(DatagramPacket p) throws IOException {....}

DatagramPacket相当于一个被邮寄的包裹,上面写着收货人的地址,包裹里是所要传递的数据。
DatagramPacket对象的常用构造方法

//以一个空数组来创建DatagramPacket对象,该对象的作用是接收DatagramSocket中的数据。相当于一个缓冲池的作用
public DatagramPacket(byte[] buf,int length)
//一个空的数组来创建DatagramPacket对象,其中 int offset 代表偏移量,int length代表长度(也可以说是池子的容量)
 public DatagramPacket(byte buf[], int offset, int length) {} 
//创建一个用于发送的DatagramPacket对象,指定发送buf数组中从offset开始,总共length个字节。
  public DatagramPacket(byte buf[], int offset, int length,  InetAddress address, int port) { }
//以一个包含数据的数组来创建DatagramPacket对象,创建该DatagramPacket对象时还指定了IP地址和端口--这就决定了该数据报的目的地。
DatagramPacket(byte[] buf, int length, InetAddress addr, int port)

通信流程

客户端:
1创建客户端 DatagramSocket 类+指定端口
2准备字节数组
3打包 DatagramPacket +服务器地址 以及端口
4发送
5释放资源
服务端:
1创建服务器 DatagramSocket 类+指定端口
2准备接受的容器 字节数组  封装 DatagramPacket
3接收
4释放资源

实例

public class UdpServer {

    public static void main(String[] args) throws IOException {
        //1、构件服务端 + 端口
        DatagramSocket serverSocket = new DatagramSocket(8888);
        //2、封装成包 DatagramPacket(byte[] buf,int lenth)  相当于构建接受池
        byte[] bytes = new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
        //接收客户端发来的数据
        serverSocket.receive(datagramPacket);
        //获取接收到的数据
        byte[] data = datagramPacket.getData();
        //获取接收到的数据的长度
        int len = datagramPacket.getLength();
        //输出相关的信息
        System.out.println("收到数据:" + new String(data, 0, len));
        //关闭接收流
        serverSocket.close();
    }
}
public class UdpClient {

    public static void main(String[] args) throws IOException {
        DatagramSocket datagramSocket = new DatagramSocket();
        String msg = "123456";
        byte[] bs = msg.getBytes();
        DatagramPacket datagramPacket = new DatagramPacket(bs, bs.length, new InetSocketAddress("127.0.0.1", 8888));
        datagramSocket.send(datagramPacket);
        datagramSocket.close();
    }

}
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 12:07:35  更:2022-02-26 12:09:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:17:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码