type
status
date
slug
summary
tags
category
icon
password
😀
文章前言:本文主要介绍TCP连接的方法。
 

一、TCP简介

传输控制协议(TCP,TransmissionControl Protocol)是一种面向连接的、可靠的、基于字节流传输层通信协议,由IETF的RFC 793定义。
TCP旨在适应支持多网络应用的分层协议层次结构,互连的计算机通信网络中成对的应用程序进程之间能够依靠TCP提供可靠的通信服务来传输字节流。TCP支持双向数据流,应用程序也可以仅单向发送数据。在主机之间,TCP使用端口号标识应用程序服务并且可以多路传输数据流
 

二、TCP通讯的常用方法

鸿蒙封装的TCP操作类位于模块Socket:@ohos.net.socket (Socket连接)
import { socket } from '@kit.NetworkKit';
下面我们来介绍一下在学习TCP连接中,我们需要学习的操作方法:

1.constructTCPSocketInstance(): TCPSocket

创建一个TCPSocket对象。
 

2.bind(address: NetAddress): Promise<void>

绑定IP地址和端口,端口可以指定为0由系统随机分配或指定为其它非0端口。使用Promise方法作为异步方法。
💡
bind的IP为'localhost'或'127.0.0.1'时,只允许本地回环接口的连接,即服务端和客户端运行在同一台机器上。
 

3.connect(options: TCPConnectOptions): Promise<void>

连接到指定的IP地址和端口。
使用promise方法作为异步方法。
参数options包含了连接的地址address和连接超时时间timeout,其中address是必选的,timeout是可选的。
在没有执行tcp.bind的情况下,也可以直接调用该接口完成与TCP服务端的连接。
 

4.send(options: TCPSendOptions): Promise<void>

通过TCPSocket连接发送数据,参数options包括要发送的数据data和字符编码encoding,其中data是必选的,encoding是可选的,默认使为utf-8编码,使用Promise方式作为异步方法。
connect方法调用成功后,才可调用此方法。该接口为耗时操作,请在Worker线程或taskpool线程调用该接口。
 

5.on(type: 'connect', callback: Callback<TCPSocketConnection>): void

订阅TCPSocketServer的连接事件。使用callback方式作为异步方法。
listen方法调用成功后,才可调用此方法。
on(type: 'message', callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void
订阅TCPSocket连接的接收消息事件,当套接字接收到消息时触发该事件,其中message表示接收到的消息,remoteInfo是发送方信息;使用callback方式作为异步方法。
 

6.close(): Promise<void>

关闭TCPSocket连接。使用Promise方式作为异步方法。
 

7.getRemoteAddress(): Promise<NetAddress>

获取对端Socket地址。使用Promise方式作为异步方法。
connect方法调用成功后,才可调用此方法。
 

三、TCP客户端通讯示例

为演示TCP通讯的方式,本示例实现了一个使用TCP协议发送、接收消息的功能,运行后的初始界面如下所示:
notion image
本示例的实现思路是这样的,首先把套接字绑定到本地的给定端口上,然后再连接到指定的服务端,最后发送消息给服务端,因为TCP是面向连接的协议,所以,本示例默认情况下连接和发送按钮都是不可用的,在绑定成功后才可以使用连接按钮,在成功连接带服务端后才可以使用发送按钮。
下面详细介绍创建该应用的步骤。

步骤1:创建Empty Ability项目。

步骤2:在module.json5配置文件加上对权限的声明:

这里分别添加了访问互联网和访问WIFI信息的权限。

步骤3:在Index.ets文件里添加如下的代码:

步骤4:编译运行,可以使用模拟器或者真机。
步骤5:配置本地端口和服务端地址,这里为了模拟服务端,使用nc命令在服务器监听9999端口,命令如下:
当然,也可以根据自己需要选择其他合适的TCP服务端。例如使用网络连接助手将本机视为服务端。
💡
注意:APP与电脑需要连接同一个WIFI。
notion image
notion image
notion image
连接上服务端后,客户端发送消息“服务端,你好啊!”
然后服务端回复:“客户端,你好!”,客户端截图如下所示:
notion image
 

📎 参考文章

 
💡
有关问题,欢迎您在底部评论区留言,一起交流~
OpenHarmony:UDP连接社会实践
Loading...
Koreyoshi
Koreyoshi
一个无可救药的乐观主义者
Latest posts
OpenHarmony:TCP连接
2025-4-17
OpenHarmony:UDP连接
2025-4-17
社会实践
2025-4-17
Linux程序设计:shell编程
2025-4-17
软件测试:面向对象的测试
2025-4-10
OFCA-OpenHarmony认证
2025-4-10
Announcement
🎉写给自己的2025心愿🎉
保研
国奖
完善博客
学一门乐器
发表一篇论文
拍摄人生照片
去3个城市旅游
专业课知识视频
拍摄毕业季视频
----- 2025 ------
👏希望我们一起变好👏