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

微网站开发合同贴吧推广400一个月

微网站开发合同,贴吧推广400一个月,做网站要注意什么问题,广西网站建设方案出现的情况说明:QT软件。刚开始都可以连接成功 之后连接 断开几次 就会出现连接失败 错误信息是the remote host closed the connection。the remote host closed the connection广泛原因分析 这个错误通常意味着远端 STM32 服务器主动关闭了连接。可能的原因包括&a…
  • 出现的情况说明:QT软件。刚开始都可以连接成功 之后连接 断开几次 就会出现连接失败 错误信息是the remote host closed the connection。
  • the remote host closed the connection广泛原因分析
    这个错误通常意味着远端 STM32 服务器主动关闭了连接。可能的原因包括:
  1. STM32 服务器端代码问题(未正确处理 accept() 或 recv())。
  2. STM32 端口未真正监听(bind() 或 listen() 失败)。
  3. STM32 服务器收到连接但立即关闭(可能是 close()、shutdown()、LWIP 资源不足等问题)。
  4. STM32 服务器崩溃或进入错误状态(导致 Socket 断开)。
  5. 数据包格式错误(QT 端发送的数据 STM32 解析失败并主动关闭连接)。
  6. 超时机制(STM32 端等待超时后主动关闭连接)。
  • 解决方法
  1. STM32 端 close() 了连接,说明它检测到了错误或超时,需要检查 recv() 逻辑。
  2. 在 STM32 代码中,accept() 后不要立即 close(),而是等待客户端数据
  3. 如果 recv() 返回 0,通常表示客户端关闭了连接,此时 STM32 也会 close(client_fd)
char buffer[256];
int bytes_received = recv(client_fd, buffer, sizeof(buffer), 0);
if (bytes_received == 0) {printf("客户端主动关闭连接\n");close(client_fd);
}

由于一开始前几次都是可以连接成功的,可以缩小原因继续分析。

  • 可能的原因
    STM32 端的 Socket 没有正确关闭,导致端口资源被占用
    每次 accept() 后,如果 close(client_fd); 处理不当,可能会导致连接数耗尽。
    STM32 端可能没有正确释放 PCB(Protocol Control Block),导致 LWIP 资源不足。
    STM32 端 TCP 连接数受限(LWIP 资源问题)
    默认 STM32 LWIP 可用的 TCP 连接数量有限,如果旧的连接没有释放,新连接可能会失败。
    MEMP_NUM_TCP_PCB 可能设置过小,导致新连接无法分配资源。
    STM32 没有正确处理 recv() 返回 0(客户端主动断开)
    正常断开:recv() 返回 0,服务器应该 close(client_fd) 释放资源。
    如果没有正确释放,可能导致系统一直保持死连接,新的连接无法建立。
  • 解决方法尝试
  1. 上述解决方法3
  2. 在 lwipopts.h 中 增加 TCP 连接的数量:✅ 如果 MEMP_NUM_TCP_PCB 太小,STM32 端可能会因为连接数耗尽而拒绝新连接。
#define MEMP_NUM_TCP_PCB 10  // 增加 TCP 连接数
#define MEMP_NUM_TCP_PCB_LISTEN 5  // 允许最大监听连接数
  1. 关闭 linger 避免 TIME_WAIT
    如果 TCP 连接没有正确关闭,可能会进入 TIME_WAIT 状态,导致端口被占用。可以通过 setsockopt() 设置 SO_LINGER 让 STM32 端尽快释放端口:✅ 这样,连接关闭后不会进入 TIME_WAIT 状态,防止端口被占用。
struct linger so_linger;
so_linger.l_onoff = 1;  // 打开 linger
so_linger.l_linger = 0; // 立即关闭连接
setsockopt(client_fd, SOL_SOCKET, SO_LINGER, &so_linger, sizeof(so_linger));
  1. 在 QT 端强制关闭连接
    QT 端每次断开连接后,确保完全释放 Socket:避免 QT 端 Socket 资源占用,导致 STM32 端误判连接未释放。
socket->close();
socket->deleteLater();
  1. 在 PC 端检查 STM32 端口状态
    在 PC 上,运行:
netstat -an | grep 8080
#如果看到大量 TIME_WAIT 状态:
tcp        0      0 192.168.1.100:8080   192.168.1.200:50000   TIME_WAIT
#说明STM32 端口没有正确释放,需要用 SO_LINGER 解决。
  1. Qt 的socket 被设置成了异步,这种 waitForxxxx 函数容易出问题,如果你想知道数据有没有写入,可以连接 bytesWritten 信号。
http://www.hkea.cn/news/854943/

相关文章:

  • bing 网站管理员2023今日新闻头条
  • 深圳市做网站前十强百度一下搜索网页
  • 做执法设备有哪些网站国家免费培训学校
  • 顺德乐从有做阿里巴巴的网站吗杭州网站设计
  • 做英文网站 用阿里服务器行吗b2b网站推广排名
  • 搭建网站做淘宝客网赌怎么推广拉客户
  • 网站建设前台与后台最新技术2021最新免费的推广引流软件
  • 做网站基本语言淘宝如何提升关键词排名
  • wordpress怎样分类目录添加标签seo文章范文
  • 订阅号可以做网站吗南宁seo外包服务商
  • 邢台哪儿做网站便宜宁波 seo排名公司
  • 深圳网站优化咨询网上广告怎么推广
  • 网站右击无效是怎么做的网络营销产品
  • 中宣部网站政治建设网站服务器是什么意思
  • 淮安网站定制徐州seo外包公司
  • 嘉兴类网站系统总部网站建设技术解决方案
  • 做网站的教科书外包网络推广公司推广网站
  • 模板名字 wordpress优化大师如何删掉多余的学生
  • 3d网站建设制作百度关键词优化手段
  • 新手做那些网站比较好东莞企业网站排名
  • 欧美风格网站360指数
  • 优秀网站建设公司电话下列哪些店铺适合交换友情链接
  • 58同城乌鲁木齐网站建设重庆网站到首页排名
  • wordpress知言主题山东服务好的seo公司
  • 旅游商务平台网站建设功能需求关键词排名查询官网
  • 做网站要搭建本地服务器么微商引流被加方法精准客源
  • 网站名字要备案吗友情链接怎么弄
  • 江苏网站开发外链网站大全
  • 网站代备案流程图百度关键词优化排名技巧
  • 石狮建设局网站今日头条站长平台