HarmonyOS 鸿蒙Next socket连接时,需要绑定本机ip地址和端口,请问如何获取自身ip地址和端口
HarmonyOS 鸿蒙Next socket连接时,需要绑定本机ip地址和端口,请问如何获取自身ip地址和端口 socket连接时,需要绑定本机ip地址和端口,请问如何获取自身ip地址和端口
7 回复
let localAddress = resolveIP(wifi.getIpInfo().ipAddress);
export function resolveIP(ip: number): string {
if (ip < 0 || ip > 0xFFFFFFFF) {
throw ('The number is not normal!');
}
return (ip >>> 24) + '.' + (ip >> 16 & 0xFF) + '.' + (ip >> 8 & 0xFF) + '.' + (ip & 0xFF);
}
export function checkIp(ip: string): boolean {
let ipRegex = /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/;
return ipRegex.test(ip);
}
更多关于HarmonyOS 鸿蒙Next socket连接时,需要绑定本机ip地址和端口,请问如何获取自身ip地址和端口的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
API9 TCP.connect() 报错....2301088 Socket operation on non-socket
怎么破
API9 TCP.connect() 报错....2301088 Socket operation on non-socket
怎么破
你这个api的说明是哪个文档看到的 harmony官方没有这样的说明
import connection from '@ohos.net.connection';
import hilog from '@ohos.hilog';
const TAG: string = 'testTag'
/**
* 获取设备ip
*/
async function getLocalIp() {
try {
hilog.info(0x00000, TAG, '判断是否存在激活的网络连接');
let hasNet = connection.hasDefaultNetSync()
if (hasNet) {
hilog.info(0x00000, TAG, '存在默认激活的网络');
} else {
hilog.error(0x00000, TAG, '不存在激活的网络');
return
}
let handleResult = await connection.getDefaultNet()
if (handleResult) {
let connectionProperties = await connection.getConnectionProperties(handleResult)
if (connectionProperties && connectionProperties.linkAddresses) {
connectionProperties.linkAddresses.forEach((address: connection.LinkAddress, index: number) => {
hilog.info(0x00000, TAG, '索引:' + index + ',值:' + JSON.stringify(address));
})
}
}
} catch (e) {
hilog.error(0x00000, TAG, `获取网络信息出现异常,异常信息 %{public}s`, JSON.stringify(e) ?? '');
}
}
在HarmonyOS(鸿蒙Next)中,获取本机IP地址和端口可以通过NetAddress
和Socket
类实现。具体步骤如下:
-
获取本机IP地址: 使用
NetAddress
类的getLocalHost
方法获取本机IP地址。let netAddress = socket.getLocalHost(); let ipAddress = netAddress.address;
-
获取本机端口: 在创建Socket连接时,可以通过
Socket
类的bind
方法绑定端口,并通过getLocalPort
方法获取绑定的端口号。let socket = new socket.Socket(); socket.bind({ address: ipAddress, port: 0 }); // 端口为0时,系统自动分配 let port = socket.getLocalPort();