HarmonyOS 使用socket发送数据频繁容易报2301004错误

在使用Socket连接行情订阅的过程中,如果页面快速滑动,频繁触发了socket发送数据,容易在发送的时候提示2301004错误,然后socket连接走error回调,error code是4

HarmonyOS
2024-12-27 17:43:35
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

可以参考一下这个例子

当阻塞于某个慢系统调用的一个进程捕获某个信号且相应处理函数返回时,该系统调用可能返回一个错误。所以,我们必须对慢系统调用返回的报错有所准备。

为了处理被中断的accept,可以改成如下形式:

for (;;)
{
  if((connfd=accept(listenfd,NULL, NULL)) < 0)
  {
    if (error == '报错信息')
      continue;
    else
      printf("accept error");
  }
}

这段代码所做的事情就是自己重启被中断的系统调用。

对于accept,以及诸如read、write、select和open之类的函数,这是适合的。

不过有一个函数我们不能重启:connect。如果该函数返回错误,我们就不能再次调用它,否则将立即返回一个错误。

当connect被一个捕获信号中断而且不自动重启时,我们必须调用select来等待连接完成。

如果发送频率比较高就需要使用多线程 而TaskPoo和Worker的作用就是是为应用程序提供一个多线程的运行环境。

当前也可以通过合并数据发送降低发送频率解决

分享
微博
QQ
微信
回复
2024-12-27 20:04:49
相关问题
HarmonyOS TCPSocket返回错误2301004
496浏览 • 1回复 待解决
HarmonyOS Socket缓存溢出
446浏览 • 1回复 待解决
Socket连接中支持发送哪些数据类型
1934浏览 • 1回复 待解决
HarmonyOS 推送服务系统错误1000900010
367浏览 • 1回复 待解决
HarmonyOS socket.TLSSocket发送Uint8Array对象
292浏览 • 1回复 待解决
推送服务系统错误1000900010
2096浏览 • 1回复 待解决
HarmonyOS 加载图片跨域错误
131浏览 • 1回复 待解决
HarmonyOS 证书链校验器19030001错误
393浏览 • 1回复 待解决
Socket连接报错,错误码88
2142浏览 • 1回复 待解决
DevEco Studio打开历史工程空指针错误
5266浏览 • 1回复 待解决
HarmonyOS 模拟器位置服务 3301300错误
465浏览 • 1回复 待解决
用华为登录一直6003错误
8605浏览 • 1回复 待解决
HarmonyOS 使用navDestination类型异常
164浏览 • 1回复 待解决