当前位置:网站首页 > Haskell函数式编程 > 正文

esp32udp广播模式(esp32 udp广播)



此篇博客用来记录 ESP32 TCP/UDP 相关应用层操作。首先列举出几个常用的 setsockopt option:

  • 启用地址复用,允许 socket 绑定处于 TIME-WAIT 状态的相同端口的 IP 地址
  • 启用 TCP 保活机制,用于服务器或客户端检测链接是否异常,默认值 IDLE:2 小时,INTVL:75 秒,CNT: 9 次
  • 设置函数 关闭 TCP 链接时的行为
  • 允许发送接收广播包,主要用于 IPv4 UDP 需要广播发送报文
  • 设置发送超时,适用于 send,write。如果超过时间,缓冲区还无法写入,会返回 -1 (错误为 ERR_WOULDBLOCK),如果写入一部分,返回写入的长度
  • 设置接收超时,适用于 read,recv,accept。如果超时时间内没收到数据,返回 -1,错误为 ERR_TIMEOUT
  • socket 接口绑定,用于多个接口的时候,让数据走指定的接口,类似于 bind
  • 设置 UDP 组播包时 IP 包头的 TTL,只针对 UDP 控制报文,默认 255
  • 设置是否禁止 Nagle(默认使能 Nagle 算法),使能 NODELAY 意味着禁用 Nagle 算法,允许发送小包,适用于敏感型,对延迟要求低的应用。禁用 NODELAY 意味这使能 Nagle 算法,数据在缓冲区累计到一定长度再发送,增大延迟,提高网络利用率,适用于吞吐要求高的应用。
  • 查询 socket 是否处于 listen 状态
  • 查询 socket 类型是 , 还是
  • 查询 socket 错误,一般配合 select error fd 使用,查询完后,errno 的值会被清 0

以下为具体的使用方法和场景。

先通过 选项使能 socket option(大部分 menuconfig 默认使能了此选项),每次创建 socket 后(bind 前)添加以下代码:

此时在此 socket 关闭后可立即使用同样的地址端口正常通信。

使能 TCP keepalive 并且设置 keepalive 的参考代码可以参考 这里,如下:

如果关闭 socket,对端不回 FIN 导致 socket 处于 TIME_WAIT 状态, 在 close socket 的地方加 socket option 强制发送 RST 断开连接。此时先通过 选项使能 socket option,然后在关闭 socket 前添加以下代码:

此时需要注意这里的参数 和 :

  • 非 0, 为 0 时, 立刻关闭(RST)
  • 非 0, 非 0 时, 会等待 时间把缓冲区数据发完,到点立刻关闭
  • 为 0 时,使用默认方式关闭

注:这部分的参考资料点击 这里。

到此这篇esp32udp广播模式(esp32 udp广播)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • pivot_table函数(pivot_table函数 行序不对)2025-04-01 20:36:08
  • 打开文件目录的快捷键(打开目录文件的函数)2025-04-01 20:36:08
  • pcp文件是什么意思(pcp是什么格式文件)2025-04-01 20:36:08
  • 文件打开目录(打开目录文件的函数)2025-04-01 20:36:08
  • 淘宝优先支付方式怎么设置(淘宝优先支付方式怎么设置不了)2025-04-01 20:36:08
  • pos机支付方式有哪些(pos机的支付流程)2025-04-01 20:36:08
  • 公文格式一级牢记!最权威的党政机关公文格式国家标准(含式样)二级牢记!最权威的党政机关公文格式国家标准(含式样)三级牢记!最权威的党政机关公文格式国家标准(含式样)格式(公文格式一级牢记!最权威的党政机关公文格式国家标准(含式样)二级牢记!最权威的党政机关公文格式国家标准(含式样)三级牢记!最权威的党政机关公文格式国家标准(含式样)格式模版)2025-04-01 20:36:08
  • sigmod激活函数的导数(sigmoid激活函数的倒数是())2025-04-01 20:36:08
  • raise三单(raise三单形式)2025-04-01 20:36:08
  • ip地址计算公式(ip地址计算公式简单)2025-04-01 20:36:08
  • 全屏图片