网站wap设置,ui设计的工作内容,物联网卡在哪里买呢,提供响应式网站建设鸿蒙模拟器模拟TCP服务端的过程涉及几个关键步骤#xff0c;主要包括创建TCPSocketServer实例、绑定IP地址和端口、监听连接请求、接收和发送数据以及处理连接事件。以下是详细的模拟过程#xff1a; **1.创建TCPSocketServer实例#xff1a;**首先#xff0c;需要导入鸿蒙…鸿蒙模拟器模拟TCP服务端的过程涉及几个关键步骤主要包括创建TCPSocketServer实例、绑定IP地址和端口、监听连接请求、接收和发送数据以及处理连接事件。以下是详细的模拟过程 **1.创建TCPSocketServer实例**首先需要导入鸿蒙的socket模块并创建一个TCPSocketServer对象。这个对象将用于管理TCP连接。
**2.绑定IP地址和端口**通过调用listen()方法将TCPSocketServer实例绑定到本地IP地址和端口上。这样服务端就可以监听指定端口上的连接请求。
**3.监听连接请求**服务端通过订阅TCPSocketServer的connect事件来监听客户端的连接请求。当客户端尝试连接时服务端会接收到一个连接事件。
**4.接收和发送数据**一旦客户端和服务端建立连接服务端会返回一个TCPSocketConnection对象用于与客户端进行数据通信。服务端可以通过订阅TCPSocketConnection的message事件来接收客户端发送的数据并通过调用send()方法来向客户端发送数据。
**5.处理连接事件**服务端还需要处理其他事件如close和error以管理连接的生命周期和错误处理。
**6.UI效果展示**在模拟器上服务端接收到的控制命令可以通过UI界面展示。例如当客户端发送一个“开灯”命令时服务端的UI界面会相应地更新灯的状态或者通过改变颜色或显示图片来模拟灯的开启。
**7.端口映射和转发**为了使服务端能够在模拟器上正确地与外部客户端通信可能需要进行端口映射和转发。这通常通过命令行工具如netsh或鸿蒙的HDC命令来实现将模拟器的端口映射到主机的端口上。
上诉步骤中1-6的步骤可以根据开发者文档的TCP服务端实现操作并且直接通过本地模拟器运行项目即可。例如以下案例
/*** 1.导入 socket 模块*/
import { socket } from kit.NetworkKit;
import { BusinessError } from kit.BasicServicesKit;/*** 2.创建 TCPSocketServer* 创建一个 TCPSocketServer 连接返回一个 TCPSocketServer 对象。*/
let tcpServer: socket.TCPSocketServer socket.constructTCPSocketServerInstance();class SocketInfo {message: ArrayBuffer new ArrayBuffer(1);remoteInfo: socket.SocketRemoteInfo {} as socket.SocketRemoteInfo;
}Entry
Component
struct Index {State showDatas: string[] [] //用于接收客服端发送的消息State serverLocalIp: string 127.0.0.1State serverPort: number 8000State serverData:string 服务端发送的信息private connectState: boolean falseprivate tcpSocketConnection ?: socket.TCPSocketConnectionasync listenServer(serverIp: string, serverPort: number) {let ipAddress: socket.NetAddress {address: serverIp,port: serverPort,}// 绑定IP:Port、监听并启动服务接收客户端的连接请求tcpServer.listen(ipAddress).then(() {console.info(listen success);tcpServer.on(connect, (tcpConnection: socket.TCPSocketConnection) {console.info(connect success)this.connectState truethis.tcpSocketConnection tcpConnectiontcpConnection.on(message, (data: SocketInfo) {console.info(receive message)let buffer data.message;let dataView new DataView(buffer);let messageData ;for (let i 0; i dataView.byteLength; i) {messageData String.fromCharCode(dataView.getUint8(i));}this.showDatas.push(客户端 messageData)});// 订阅TCPSocketConnection相关的事件tcpConnection.on(close, () {console.info(断开连接);});})}).catch((err: BusinessError) {console.info(listen fail);});}async sendData(message: string) {if (this.connectState) { //连接成功才可发送数据// 服务端给连接的客户端发送信息let tcpSendOptions: socket.TCPSendOptions {} as socket.TCPSendOptions;tcpSendOptions.data messagethis.tcpSocketConnection?.send(tcpSendOptions).then(() {console.info(send success);this.showDatas.push(服务端 tcpSendOptions.data)})}}build() {Column({ space: 5 }) {Text(TCP的服务端实现).fontSize(30)Row({ space: 5 }) {Text(服务端ip:).width(110).fontSize(20).textAlign(TextAlign.End)TextInput({ placeholder: this.serverLocalIp }).fontSize(20).width(60%).onChange((value) {this.serverLocalIp value})}Row({ space: 5 }) {Text(服务端port:).width(110).fontSize(20).textAlign(TextAlign.End)TextInput({ placeholder: this.serverPort.toString() }).fontSize(20).width(60%).type(InputType.Number).onChange((value) {this.serverPort parseInt(value)})}Button(服务端启动并监听连接).fontSize(25).onClick(() {this.listenServer(this.serverLocalIp, this.serverPort)})TextInput({ placeholder: this.serverData }).fontSize(20).width(90%).height(50).onChange((value) {this.serverData value})Button(发送消息) //监听连接状态.fontSize(25).onClick((){this.sendData(this.serverData)})List(){ListItem(){Text(服务端消息展示)}ForEach(this.showDatas, (item: string) {ListItem(){Text(item).fontSize(20)}})}.width(95%).layoutWeight(1)}}
}以上代码的UI效果
因为需要使用网络需要开通网络权限
本地模拟器模拟TCP服务端的必备操作
IP端口映射 以管理员身份运行 命令提示符 电脑IP和本地模拟器IP端口映射 在命令行输入以下代码其中connectaddress127.0.0.1 connectport8000必须一致 当有服务访问你电脑的IP:8888时操作系统会自动映射到“127.0.0.1:8000”
netsh interface portproxy add v4tov4 listenaddress你的电脑的IP地址 listenport8888 connectaddress127.0.0.1 connectport8000显示映射结果
netsh interface portproxy show v4tov4设置端口转发
首先启动本地模拟器 在进行端口转发前一定要先启动本地模拟器即 本地模拟器每次重启都需要重新设备端口转发
接下来需要配置鸿蒙模拟器端口转发使用HDC命令操作需要用到hdc.exe文件该文件在OpenHarmony SDK目录下的\toolchains目录内部找到每个人的路径不同需要记住该目录。例如我的电脑上hdc.exe的路径 进入toolchains目录在命令行执行以下命令进行端口转发 注意本地模拟器每次重启都需要重新进行端口转发
hdc.exe -t 127.0.0.1:5555 fport tcp:8000 tcp:8000执行以上命令得到如下结果 最后将项目部署到模拟器上启动服务端便可以和TCP客户端连接并且通信了