HarmonyOS 鸿蒙Next native c++端socket阻塞模式调用recv,固定返回0

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next native c++端socket阻塞模式调用recv,固定返回0

native c++端socket非阻塞模式调用recv,固定返回值0,errno=11。请问有什么解决方法吗?

2 回复
当socket的缓冲区已满或者空时,尝试读取或写入数据会返回该错误。这时候需要等待一段时间,或者使用select函数来检查socket是否可读或可写。

在HarmonyOS鸿蒙系统中,如果你在使用native C++端的socket进行阻塞模式调用recv时固定返回0,这通常表示远端已经正常关闭了连接(即进行了优雅的关闭操作,如对方调用了shutdownclose)。如果这不是预期的行为,你需要检查以下几点:

  1. 确认远端确实没有关闭连接。
  2. 检查网络连接是否稳定,没有数据包丢失。
  3. 验证recv的调用是否在任何条件分支中被意外地调用,且在这些分支中连接可能已被关闭。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部