12.udp

12.udp

      • **1. UDP特性**
      • **2. UDP编程框架(C/S模式)**
      • **3. UDP发送接收函数**
      • **4. UDP编程练习**

1. UDP特性

  • 连接特性:无链接,通信前无需像TCP那样建立连接。
  • 可靠性:不可靠,不保证数据按序到达、不保证数据无丢失或重复。
  • 数据传输:适合传输大数据,但实际传输受网络MTU等因素限制。

2. UDP编程框架(C/S模式)

  • 服务器端流程
    1. 创建套接字:调用socket()函数,参数为(PF_INET,SOCK_DGRAM,0)
    2. 绑定地址:使用bind()函数,绑定服务器地址和端口,此步骤为必选。
    3. 接收数据:通过recvfrom()函数接收客户端发送的数据。
    4. 关闭套接字:通信结束后,调用close()函数关闭套接字。
  • 客户端流程
    1. 创建套接字:同样调用socket(PF_INET,SOCK_DGRAM,0)
    2. 绑定地址bind()函数为可选操作,若需要固定客户端端口则绑定。
    3. 发送数据:利用sendto()函数向服务器发送数据。
    4. 关闭套接字:完成通信后,用close()关闭套接字。

3. UDP发送接收函数

  • sendto函数
    • 功能:用于UDP协议中向对方发送数据。
    • 参数
      • sockfd:本地的套接字id。
      • buf:本地的数据存储,一般是要发送的数据。
      • len:要发送的数据长度。
      • flags:发送数据方式,0表示阻塞发送。
      • dest_addr:必选,表示要发送到的目标主机信息结构体。
      • addrlen:目标地址长度。
    • 返回值:成功返回发送的数据长度,失败返回 -1。
  • recvfrom函数
    • 功能:用于UDP协议中获取对方发送的数据。
    • 参数
      • sockfd:本地的套接字id。
      • buf:要存储数据的内存区,一般是数组或者动态内存。
      • len:要获取的数据长度,一般是buf的大小。
      • flags:获取方式,0表示阻塞。
      • src_addr:可选,表示对方的地址信息结构体,如果为NULL,表示不关心对方地址。
      • addrlen:对方地址信息结构体大小,如果src_addrNULL,则该值也为NULL
    • 返回值:成功返回接收到的数据长度,失败返回 -1。

4. UDP编程练习

  • 验证UDP无链接性质的测试程序:编写程序,在未建立类似TCP连接的情况下,实现UDP数据的发送和接收,验证UDP无需预先连接即可通信的特性。
  • 基于UDP的点对点聊天程序:利用UDP的发送和接收函数,实现两个端点之间的实时消息交互功能。
  • 基于UDP的聊天室程序
    • 注册过程:每个客户端在服务器端进行注册,服务器记录客户端信息。
    • 消息转发:服务器接收任意客户端发送的消息,并将其转发给所有在线客户端。
    • 下线通知:当任意客户端下线时,服务器负责通知其他在线用户主机。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/10122.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单机伪分布Hadoop详细配置

目录 1. 引言2. 配置单机Hadoop2.1 下载并解压JDK1.8、Hadoop3.3.62.2 配置环境变量2.3 验证JDK、Hadoop配置 3. 伪分布Hadoop3.1 配置ssh免密码登录3.2 配置伪分布Hadoop3.2.1 修改hadoop-env.sh3.2.2 修改core-site.xml3.2.3 修改hdfs-site.xml3.2.4 修改yarn-site.xml3.2.5 …

大数据相关职位 职业进阶路径

大数据相关职位 & 职业进阶路径 📌 大数据相关职位 & 职业进阶路径 大数据领域涵盖多个方向,包括数据工程、数据分析、数据治理、数据科学等,每个方向的进阶路径有所不同。以下是大数据相关职位的详细解析及其职业进阶关系。 &#…

《大语言模型》综述学习笔记

《A Survey of Large Language Models》英文版综述最近出了中文版书——《大语言模型》,本博客作为阅读笔记记录一下,综述主页:https://github.com/RUCAIBox/LLMSurvey 关于LLM的一些概述和理解 记录一些有启发性的说法: 1、当前…

供应链系统设计-供应链中台系统设计(十二)- 清结算中心设计篇(一)

概述 在之前的文章中,我们通过之前的两篇文章中,如下所示: 供应链系统设计-供应链中台系统设计(十)- 清结算中心概念片篇 供应链系统设计-供应链中台系统设计(十一)- 清结算中心概念片篇 说…

MySQL查询优化(三):深度解读 MySQL客户端和服务端协议

如果需要从 MySQL 服务端获得很高的性能,最佳的方式就是花时间研究 MySQL 优化和执行查询的机制。一旦理解了这些,大部分的查询优化是有据可循的,从而使得整个查询优化的过程更有逻辑性。下图展示了 MySQL 执行查询的过程: 客户端…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.26 统计圣殿:从描述统计到推断检验

1.26 统计圣殿:从描述统计到推断检验 目录 #mermaid-svg-3nz11PRr47fVfGWZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3nz11PRr47fVfGWZ .error-icon{fill:#552222;}#mermaid-svg-3nz11PRr47fVfGWZ…

如何用 Groq API 免费使用 DeepSeek-R1 70B,并通过 Deno 实现国内访问

这几天都被Deepseek刷屏了,而且Deepseek由于异常访问量,这几天都不能愉快的和它玩耍了, 我发现Groq新增了一个Deepseek的70b参数的模型, DeepSeek-R1 70B 作为一款强大的开源模型,提供了卓越的推理能力,而 …

物联网智能项目之——智能家居项目的实现!

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于物联网智能项目之——智能家居项目…

Linux《基础指令》

在之前的Linux《Linux简介与环境的搭建》当中我们已经初步了解了Linux的由来和如何搭建Linux环境,那么接下来在本篇当中我们就要来学习Linux的基础指令。在此我们的学习是包括两个部分,即指令和关于Linux的基础知识;因此本篇指令和基础知识的…

Addressable学习

AssetsBundle是Unity的资源管理机制,将资源打包到AssetsBundle资源包并提供接口能从ab包里面加载资源出来。有了这个机制以后,我们要做资源管理,还需要做: a: 根据项目需求,编写编辑器扩展,提供指定资源打入对应bundle包工具策略; b: 根据项目的需求,资源…

详解u3d之AssetBundle

一.AssetBundle的概念 “AssetBundle”可以指两种不同但相关的东西。 1.1 AssetBundle指的是u3d在磁盘上生成的存放资源的目录 目录包含两种类型文件(下文简称AB包): 一个序列化文件,其中包含分解为各个对象并写入此单个文件的资源。资源文件&#x…

【Block总结】OutlookAttention注意力,捕捉细节和局部特征|即插即用

论文信息 标题: VOLO: Vision Outlooker for Visual Recognition作者: Li Yuan, Qibin Hou, Zihang Jiang, Jiashi Feng, Shuicheng Yan代码链接: https://github.com/sail-sg/volo论文链接: https://arxiv.org/pdf/2106.13112 创新点 前景注意力机制: VOLO引入了一种称为“…

后端token校验流程

获取用户信息 前端中只有 await userStore.getInfo() 表示从后端获取数据 在页面中找到info对应的url地址,在IDEA中查找 这里是getInfo函数的声明,我们要找到这个函数的使用,所以点getInfo() Override public JSONObject getInfo() {JSO…

一文讲解Java中的异常处理机制

Java中的异常处理机制用于处理程序运行过程中可能发生的各种异常情况,通常通过try-catch-finally语句和throw关键字来实现 Throwable是Java语言中所有错误和异常的父类。它有两个主要的子类:Error和Exception;Error类代表那些严重的错误&am…

论文速读|Matrix-SSL:Matrix Information Theory for Self-Supervised Learning.ICML24

论文地址:Matrix Information Theory for Self-Supervised Learning 代码地址:https://github.com/yifanzhang-pro/matrix-ssl bib引用: article{zhang2023matrix,title{Matrix Information Theory for Self-Supervised Learning},author{Zh…

SpringCloud系列教程:微服务的未来(十八)雪崩问题、服务保护方案、Sentinel快速入门

前言 在分布式系统中,雪崩效应(Avalanche Effect)是一种常见的故障现象,通常发生在系统中某个组件出现故障时,导致其他组件级联失败,最终引发整个系统的崩溃。为了有效应对雪崩效应,服务保护方…

【NLP251】意图识别 与 Seq2Seq

Seq2Seq模型作为从RNN演进到Transformer和Attention机制的关键中间阶段,它不仅承前启后,还为我们深入理解这些复杂的模型架构提供了重要的基础。接下来,我们将详细探讨Seq2Seq模型的原理及其在自然语言处理领域中的应用。 1. 原理及网络框架 …

docker配置mysql并使用mysql connector cpp编程

mysql 配置mysql使用docker 这里使用docker安装了,比较简洁,不想使用了直接就可以把容器删掉,首先获取下镜像,如下命令 docker pull container-registry.oracle.com/mysql/community-server这里直接默认使用最新版本的mysql了 …

赛博算卦之周易六十四卦JAVA实现:六幺算尽天下事,梅花化解天下苦。

佬们过年好呀~新年第一篇博客让我们来场赛博算命吧! 更多文章:个人主页 系列文章:JAVA专栏 欢迎各位大佬来访哦~互三必回!!! 文章目录 #一、文化背景概述1.文化起源2.起卦步骤 #二、卦象解读#三、just do i…

【16届蓝桥杯寒假刷题营】第2期DAY4

【16届蓝桥杯寒假刷题营】第2期DAY4 - 蓝桥云课 问题描述 幼儿园小班的浩楠同学有一个序列 a。 他想知道有多少个整数三元组 (i,j,k) 满足 1≤i,j,k≤n 且 ai​aj​ak​。 输入格式 共2行,第一行一个整数 n,表示序列的长度。 第二行 n 个整数&#x…