HarmonyOS鸿蒙Next中ets socket怎么实现服务端
HarmonyOS鸿蒙Next中ets socket怎么实现服务端 这是设备1-应用绑定socket,作为服务端的代码,log打印bind成功了,但是设备中查找端口接听,发现这个端口并没有监听。
public startSocketServer(ipAddress: string): void {
Logger.info(TAG, "startSocketServer ipAddress:" + ipAddress);
// 绑定IP地址和端口。
let bindAddress = {
address: ipAddress,
port: this.PORT, // 绑定端口,如1234
family: 1
};
// 创建一个TCPSocket连接,返回一个TCPSocket对象。
let mSocket: socket.TCPSocket = socket.constructTCPSocketInstance();
mSocket.bind(bindAddress, err => {
if (err) {
Logger.info(TAG, 'bind socket fail ' + JSON.stringify(err));
return;
}
Logger.info(TAG, 'bind socket success');
Logger.info(TAG, "onReceiveMsg");
mSocket.on('message', value => {
Logger.info(TAG, "on message")
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))
}
Logger.info(TAG, "onReceiveMsg:" + str + ",remoteInfo:" + JSON.stringify(value.remoteInfo))
});
});
}
这是设备2-应用对设备1进行连接,发送数据的代码,此时输入设备1 ip对设备1进行socket连接,但是connect失败了
public sendMsg(ipAddress: string, msg: string): void {
Logger.info(TAG, "sendMsg ipAddress " + ipAddress + ",msg:" + msg);
// 连接到指定的IP地址和端口。
let connectAddress = {
address: ipAddress,
port: this.PORT, // 连接端口,如5678
family: 1
};
// 创建一个TCPSocket连接,返回一个TCPSocket对象。
let mSocket: socket.TCPSocket = socket.constructTCPSocketInstance();
mSocket.connect({
address: connectAddress,
timeout: 6000
}, err => {
if (err) {
Logger.info(TAG, 'connect socket fail ' + JSON.stringify(err));
return;
}
Logger.info(TAG, 'connect socket success')
// 发送数据
let dataHeader: DataHeader = new DataHeader(DataType.TEXT, "");
let sendMsg = dataHeader.toJsonStringWithSpilt() + msg;
Logger.info(TAG, "sendMsg:" + sendMsg);
mSocket.send({
data: sendMsg
}, err => {
if (err) {
Logger.info(TAG, 'sendMsg fail ' + JSON.stringify(err));
return;
}
Logger.info(TAG, 'sendMsg success');
mSocket.close().then(() => {
Logger.info(TAG, 'close socket success');
}).catch(error => {
Logger.info(TAG, 'close socket failed,' + JSON.stringify(error));
})
})
});
}
文档接口看不出什么东西,请问怎么实现ets的socket服务端呢?可以让多台设备进行socket数据接发。
更多关于HarmonyOS鸿蒙Next中ets socket怎么实现服务端的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS鸿蒙Next中ets socket怎么实现服务端的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
兄弟,最近我也在研究本地实现服务化,本来准备用poco实现的,不过next版本有了,可以用open版本。
TCPSocket是客户端socket,没有listen等方法,无法作为服务端使用。
刚看了一下 OpenHarmony的文档,在4.0版本的socket模块提供了constructTCPSocketServerInstance()方法,可以生成TCPSocketServer 对象,TCPSocketServer 提供了listen方法,可以监听客户端连接。不知道HarmonyOS和OpenHarmony的版本对应关系,也没有HarmonyOSNext的权限,不知道从哪个版本开始提供constructTCPSocketServerInstance()方法。
next版本有了,
请问一下有结果了没有, 也遇到同样的问题