HarmonyOS socket链接后,断开网络,收到错误码103,message为空?

this.tcpSocket.on('error', (data: BusinessError) => {
  this.tztLog("tcp_onError error:%s", JSON.stringify(data));
  this.closeSocket();
});

问题1:socket链接后,断开网络,收到错误码103,message为空,103的意思是什么?

问题2:socket从远程断开和从本地手动断开有没有区分?

阅读 510
1 个回答

问题一:错误码103表示“Network unreachable”,即网络不可达。在Socket连接断开网络后,收到此错误码意味着网络连接无法建立或网络出现了问题。

问题二:

1.从远程断开:当远程端主动关闭Socket连接时,本地端会收到网络断开的通知,并且Socket连接会被关闭。此时,不会调用任何回调函数,并且不会显式地调用close方法。

2.从本地手动断开:当本地端主动关闭Socket连接时,可以通过调用close方法来断开连接。可以选择使用Promise或回调函数来处理断开过程的异步操作。

区别如下:

通知方式:从远程断开时,没有明确的通知方法;从本地手动断开时,可以通过close方法明确调用。

异步处理:从远程断开时,无需显式处理;从本地手动断开时,需要处理异步操作的结果。

错误码104的含义

错误码104表示“连接失败”。这通常意味着在建立TCP连接时,发生了与远程主机的通信错误。具体原因可能包括:

  • 远程主机未响应或无法响应连接请求。
  • 网络连接被拒绝。
  • 防火墙阻止了连接尝试。
  • 其他网络相关的错误。

详细解释

在TCP/IP协议中,TCP连接的建立是一个复杂的过程,涉及多个步骤和握手。当连接失败时,操作系统会返回相应的错误码来指示失败的原因。错误码104表示在TCP连接的建立过程中,发生了与远程主机的通信错误。

这种错误通常意味着操作系统尝试与目标主机建立连接时,遇到了无法克服的网络障碍。例如,目标主机可能不可达、网络连接被拒绝、防火墙阻止了连接尝试等。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进