当前位置: 首页 > 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.dtcms.com/a/332466.html

相关文章:

  • 数据结构初阶(15)排序算法—交换排序(快速排序)(动图演示)
  • Android 欧盟网络安全EN18031 要求对应的基本表格填写
  • 【CUDA 编程思想】FusedQKVProj-分组量化矩阵乘法高效实现全流程解析
  • 思考:高速场景的行星轮混动效率如何理解
  • 读《精益数据分析》:黏性(Stickiness)—— 验证解决方案是否留住用户
  • STM32L051同时处理Alarm A和Alarm B中断
  • 【机器人-基础知识】ROS1和ROS2对比
  • 一周学会Matplotlib3 Python 数据可视化-绘制误差条形图
  • 自定义View学习记录之 滚动抽奖单片
  • 前端性能优化工具Performance面板实战指南
  • 为什么 /deep/ 现在不推荐使用?
  • Webpack详解
  • HTML 常用标签介绍
  • 经典回顾:Hive执行原理、MapReduce执行流程、Spark执行流程
  • html抽奖功能
  • Apache 如何支持SHTML(SSI)的配置方法
  • 更换cmd背景图片
  • C++ 优选算法 力扣 1004. 最大连续1的个数 II 滑动窗口 (同向双指针)优化 每日一题 详细题解
  • 【Java Web 快速入门】十、AOP
  • 活到老学到老之Jenkins Pipeline Job
  • spring-ai-alibaba 学习(二十五)——graph之内置节点
  • Linux815 shell:while
  • Spring Boot接口签名校验设计与实现
  • 设计模式(Design Patterns)
  • WEB安全--Java安全--Servlet内存马
  • DzzOffice 开发手册之系统的配置
  • 短剧小程序系统开发:打造个性化娱乐新体验
  • 【反序列化基本介绍】
  • 25.Linux 聚合链路与软件网桥
  • 【中微半导体】BAT32G139GK48FA 定时器B输入捕获测速(寄存器TBSR/TBIER/TB/TBGRA/TBGRC)