Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
2aac6f4c
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
2aac6f4c
编写于
7月 14, 2023
作者:
O
openharmony_ci
提交者:
Gitee
7月 14, 2023
浏览文件
操作
浏览文件
下载
差异文件
!20529 增加TCP服务端示例
Merge pull request !20529 from 徐杰/tcpserver_socket_connection_md_0706
上级
69d4d098
a9ef4fdc
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
85 addition
and
0 deletion
+85
-0
zh-cn/application-dev/connectivity/socket-connection.md
zh-cn/application-dev/connectivity/socket-connection.md
+85
-0
未找到文件。
zh-cn/application-dev/connectivity/socket-connection.md
浏览文件 @
2aac6f4c
...
...
@@ -16,6 +16,7 @@ Socket连接主要是通过Socket进行数据传输,支持TCP/UDP/TLS协议。
应用通过Socket进行数据传输,支持TCP/UDP/TLS协议。主要场景有:
-
应用通过TCP/UDP Socket进行数据传输
-
应用通过TCP Socket Server进行数据传输
-
应用通过TLS Socket进行加密数据传输
## 接口说明
...
...
@@ -28,12 +29,15 @@ Socket连接主要由socket模块提供。具体接口说明如下表。
| -------- | -------- |
| constructUDPSocketInstance() | 创建一个UDPSocket对象。 |
| constructTCPSocketInstance() | 创建一个TCPSocket对象。 |
| constructTCPSocketServerInstance() | 创建一个TCPSocketServer对象。 |
| listen() | 绑定IP地址和端口,监听并接受与此套接字建立的TCPSocket连接。(仅TCP支持) |
| bind() | 绑定IP地址和端口。 |
| send() | 发送数据。 |
| close() | 关闭连接。 |
| getState() | 获取Socket状态。 |
| connect() | 连接到指定的IP地址和端口(仅TCP支持) |
| getRemoteAddress() | 获取对端Socket地址(仅TCP支持,需要先调用connect方法) |
| setExtraOptions() | 设置Socket连接的其他属性。 |
| on(type:
'message') | 订阅Socket连接的接收消息事件。 |
| off(type:
'message') | 取消订阅Socket连接的接收消息事件。 |
| on(type:
'close') | 订阅Socket连接的关闭事件。 |
...
...
@@ -163,6 +167,87 @@ setTimeout(() => {
},
30
*
1000
);
```
## 应用通过TCP Socket Server进行数据传输
### 开发步骤
服务端TCP Socket流程:
1.
import需要的socket模块。
2.
创建一个TCPSocketServer连接,返回一个TCPSocketServer对象。
3.
绑定本地IP地址和端口,监听并接受与此套接字建立的客户端TCPSocket连接。
4.
订阅TCPSocketServer的connect事件,用于监听客户端的连接状态。
5.
客户端与服务端建立连接后,返回一个TCPSocketConnection对象,用于与客户端通信。
6.
订阅TCPSocketConnection相关的事件,通过TCPSocketConnection向客户端发送数据。
7.
主动关闭与客户端的连接。
8.
取消TCPSocketConnection和TCPSocketServer相关事件的订阅。
```
js
import
socket
from
'
@ohos.net.socket
'
// 创建一个TCPSocketServer连接,返回一个TCPSocketServer对象。
let
tcpServer
=
socket
.
constructTCPSocketServerInstance
();
// 绑定本地IP地址和端口,进行监听
tcpServer
.
listen
({
address
:
"
192.168.xx.xxx
"
,
port
:
xxxx
,
family
:
1
},
err
=>
{
if
(
err
)
{
console
.
log
(
"
listen fail
"
);
return
;
}
console
.
log
(
"
listen success
"
);
})
// 订阅TCPSocketServer的connect事件
tcpServer
.
on
(
'
connect
'
,
function
(
client
)
{
// 订阅TCPSocketConnection相关的事件
client
.
on
(
'
close
'
,
()
=>
{
console
.
log
(
"
on close success
"
);
});
client
.
on
(
'
message
'
,
function
(
value
)
{
let
buffer
=
value
.
message
;
let
dataView
=
new
DataView
(
buffer
);
let
str
=
""
;
for
(
let
i
=
0
;
i
<
dataView
.
byteLength
;
++
i
)
{
str
+=
String
.
fromCharCode
(
dataView
.
getUint8
(
i
));
}
console
.
log
(
"
received message--:
"
+
str
);
console
.
log
(
"
received address--:
"
+
value
.
remoteInfo
.
address
);
console
.
log
(
"
received family--:
"
+
value
.
remoteInfo
.
family
);
console
.
log
(
"
received port--:
"
+
value
.
remoteInfo
.
port
);
console
.
log
(
"
received size--:
"
+
value
.
remoteInfo
.
size
);
});
// 向客户端发送数据
client
.
send
({
data
:
'
Hello, client!
'
},
err
=>
{
if
(
err
)
{
console
.
log
(
'
send fail
'
);
return
;
}
console
.
log
(
'
send success
'
);
});
// 关闭与客户端的连接
client
.
close
(
err
=>
{
if
(
err
)
{
console
.
log
(
'
close fail
'
);
return
;
}
console
.
log
(
'
close success
'
);
});
// 取消TCPSocketConnection相关的事件订阅
setTimeout
(()
=>
{
client
.
off
(
'
message
'
);
client
.
off
(
'
close
'
);
},
10
*
1000
);
});
// 取消TCPSocketServer相关的事件订阅
setTimeout
(()
=>
{
tcpServer
.
off
(
'
connect
'
);
},
30
*
1000
);
```
## 应用通过TLS Socket进行加密数据传输
### 开发步骤
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录