基于TLSSocket的通信能力
基于TLSSocket的通信能力
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
基于原生能力的组件封装
364浏览 • 1回复 待解决
基于原生的水印添加能力
659浏览 • 1回复 待解决
基于原生能力的网络状态感知
439浏览 • 1回复 待解决
基于@ohos/axios的网络请求能力
392浏览 • 1回复 待解决
基于libuv异步库进行线程通信
1773浏览 • 0回复 待解决
基于原生能力的跨应用跳转
744浏览 • 1回复 待解决
基于原生能力的网络加载性能分析
669浏览 • 1回复 待解决
HarmonyOS事件通信能力解决方案
706浏览 • 1回复 待解决
基于ArkUI实现类似.9图的拉伸能力
450浏览 • 1回复 待解决
基于原生能力实现图文混排
381浏览 • 1回复 待解决
基于原生能力的设备唯一ID方案
671浏览 • 1回复 待解决
基于ArkUI现有能力实现自定义弹窗封装方案
714浏览 • 1回复 待解决
针对IPv6地址的TLSSocket bind操作无响应
238浏览 • 1回复 待解决
WebView之通信,什么是WebView,为什么要通信,如何实现通信?
1305浏览 • 1回复 待解决
基于webView的嵌套滚动
450浏览 • 1回复 待解决
基于RichEditor的评论编辑
604浏览 • 1回复 待解决
有哪些进程间通信的手段?例如,ExtensionAbility如何与主进程通信?
1763浏览 • 1回复 待解决
socket通信示例,创建tcp server和tcp client进行通信
688浏览 • 1回复 待解决
需要web组件JSBridge通信的demo
150浏览 • 1回复 待解决
鸿蒙是基于Android的吗?
11706浏览 • 2回复 已解决
基于WebDownloadDelegate的PDF下载预览
420浏览 • 1回复 待解决
基于原生的应用主题开发
430浏览 • 1回复 待解决
基于bindSheet的半模态弹窗
842浏览 • 1回复 待解决
基于measure实现的文本测量
619浏览 • 1回复 待解决
基于滚动组件的手势处理
360浏览 • 1回复 待解决
Socket进行数据传输的能力,支持TLSSocket能力。
场景一 :用户场景需要实现网上银行叫号及其他需要建立即时通信传输数据时,可通过TCP/TLSSocket方式加密传输数据。
场景二 :数据发送过程中 当发送方每次写入数据 < 套接字(Socket)缓冲区大小;接收方读取套接字(Socket)缓冲区数据不够及时,可能存在粘包/黏包情况,需要做对应的接收处理。
方案描述
场景一
用户场景需要实现网上银行叫号及其他需要建立即时通信传输数据时,可通过tcp/tlsSocket方式加密传输数据。
方案
调用网络模块socket中TLSSocket能力建立通信连接,有关能力可参考文档:@ohos.socket.TLSSocket。
主要步骤可参考如下:
1. 引入socket能力,创建一个TLSSocket连接。
2. connect连接绑定服务器 IP 和端口号,bind绑定本地网络ip地址。
3. 双向认证上传客户端 CA 证书及数字证书;单向认证上传客户端 CA 证书。
4. 订阅TLSSocket相关消息事件。
5. 发送数据。
6. TLSSocket连接使用完毕后,主动关闭。
核心代码
场景二
数据发送过程中 当发送方每次写入数据 < 套接字(Socket)缓冲区大小;接收方读取套接字(Socket)缓冲区数据不够及时,可能存在粘包/黏包情况,需要做对应的接收处理。
方案
1. 发送方和接收方规定固定大小的缓冲区,也就是发送和接收都使用固定大小的byte[]数组长度,当字符长度不够时使用空字符弥补。
2. 以特殊的字符结尾,比如以“\n”结尾,这样我们就知道结束字符,从而避免了粘包问题。
核心代码
可根据当前服务端/客户端收发数据的实际情况,调用socket中提供setextraoptions能力设置较合适发送/接收数据的缓存区间大小做处理。
2. 客户端发送数据时携带特殊符号做区分处理。
常见问题
Q:socket调用返回2301115原因及解决方式。
A : 可能是连接参数中超时时间设置短导致,可将timeout参数设置为15s,如不设置默认超时时间为5s。
Q:socket连接时on('error')错误码返回为-1原因。
A:TCP Socket返回-1错误码通常表示连接失败或发送数据失败。
这个错误码可能由:1、当前通信连接被拒绝;2、网络连接失败 3、连接或发送数据时超时导致。
Q:socket中ping命令方式实现情况。
A:为防止泛洪破坏,网络模块暂不直接提供ping能力接口,参考三方库中能力封装处理:https://github.com/dgibson/iputils/blob/master/ping.c。