当前位置: 首页 > news >正文

day31 UDP通信

UDP通信原理

服务端和客户端都只需要 创建、绑定、交互、关闭 

主要的信息交互是通过recvfromsendto实现

伪代码

//1.创建套接字文件
int sfd=socket();
//2.绑定
bind(sfd,(struct sockaddr*)&sin,socklen);
//3.交互
//3.1接收
recvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr*)&cin,cocklen);
//3.2发送
sendto(sfd,buf,strlen(buf),0,(struct sockaddr*)&cin,cocklen);
//关闭
close(sfd);

recvfrom

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,

                                struct sockaddr *src_addr, socklen_t *addrlen);

功能:从套接字文件描述符读取数据,并获取对端的网络地址信息

参数1:套接字

参数2:接收数据容器

参数3:接收数据大小

参数4:阻塞状态

参数5:对端通用网络地址信息

参数6:地址信息大小(地址传递

注意:参数5、6可写NULL但此时只能接收,不能发送

返回值:成功返回读取的字节大小,失败返回-1更新errno

sendto

 ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);

功能:向套接字文件描述符发送数据,给指定对端

参数1:套接字

参数2:发送数据容器

参数3:发送数据大小

参数4:阻塞状态

参数5:对端通用网络地址信息

参数6:地址信息大小(值传递

注意:参数5、6必须写

返回值:成功返回发送的字节大小,失败返回-1更新errno

getsockopt &setsockopt

int getsockopt(int sockfd, int level, int optname,
void *optval, socklen_t *optlen);
int setsockopt(int sockfd, int level, int optname,
const void *optval, socklen_t optlen);

功能:设置套接字在不同层上的属性

参数1:套接字

参数2:要设置的层         应用层:SOL_SOCKET

                                    传输层:tcp传输        IPPROTO_TCP

                                                  udp传输       IPPROTO_UDP

                                    网络层:IPRROTO_IP

参数3:设置当层的属性名称

参数4:设置的属性值

参数5:属性值的大小

返回值:成功返回0,失败返回-1更新errno

http://www.lryc.cn/news/621914.html

相关文章:

  • Ansible 学习笔记:变量事实管理、任务控制与文件部署
  • 计算机视觉(opencv)实战四——图片阈值处理cv2.threshold()
  • Android RxJava变换操作符详解
  • 从0开始学习Java+AI知识点总结-15.后端web基础(Maven基础)
  • 使用 PyQt5 构建 Python 人脸采集系统实战指南
  • 16进制pcm数据转py波形脚本
  • 来火山引擎「算子广场」,一键处理多模态数据
  • 标题:移动端安全加固:发散创新,筑牢安全防线引言:随着移动互联网
  • OpenCV Python——VSCode编写第一个OpenCV-Python程序 ,图像读取及翻转cv2.flip(上下、左右、上下左右一起翻转)
  • 【数据结构初阶】--排序(三):冒泡排序、快速排序
  • 有红帽认证证书可以0元置换华为openEuler-HCIA/HCIP认证
  • html抽奖功能
  • 【Twincat3】IO的SCAN 不可选中,SCAN中后扫描不到设备
  • langGraph--2--langServe+langGraph示例
  • 高等数学 8.3 平面及其方程
  • 开发Chrome/Edge插件基本流程
  • 使用 Serverless 架构快速构建基于 Iceberg 的事务型实时数据湖
  • redis6的多线程原理
  • 永磁同步电机控制 第一篇、认识电机
  • 图像生成适配器对比与选择:LoRA、ControlNet、T2I-Adapter 与 IP-Adapter
  • UE UDP通信
  • tun/tap 转发性能优化
  • 记录一下 StarRocks 点查的 Profile Metrics
  • C++结构体详解
  • 局部变量与全局变量的关系及应用
  • 【swift开发】SwiftUI概述 SwiftUI 全面解析:苹果生态的声明式 UI 革命
  • Unity_导航网格
  • 什么是国产化防爆平板?有哪些功能特点?应用在什么场景?
  • Unity与OpenGL中的材质系统详解
  • 【完整源码+数据集+部署教程】孔洞检测系统源码和数据集:改进yolo11-RetBlock