HarmonyOS socket 绑定IP问题

在tcp socket 连接中,需要 bind() 来绑定自己的IP,如何可以获取到自己的IP , 如果不绑定是不是没法收到message 消息

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

获取ip可以参考 https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-net-connection-V5

使用connection.getAddressesByName

tcp可以参考

import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 创建一个TCPSocketServer连接,返回一个TCPSocketServer对象。
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
// 绑定本地IP地址和端口,进行监听

let ipAddress : socket.NetAddress = {} as socket.NetAddress;
ipAddress.address = "192.168.xxx.xxx";
ipAddress.port = 4651;
tcpServer.listen(ipAddress).then(() => {
  console.log('listen success');
}).catch((err: BusinessError) => {
  console.log('listen fail');
});

class SocketInfo {
  message: ArrayBuffer = new ArrayBuffer(1);
  remoteInfo: socket.SocketRemoteInfo = {} as socket.SocketRemoteInfo;
}
// 订阅TCPSocketServer的connect事件
tcpServer.on("connect", (client: socket.TCPSocketConnection) => {
  // 订阅TCPSocketConnection相关的事件
  client.on("close", () => {
    console.log("on close success");
  });
  client.on("message", (value: SocketInfo) => {
    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);
  });

  // 向客户端发送数据
  let tcpSendOptions : socket.TCPSendOptions = {} as socket.TCPSendOptions;
  tcpSendOptions.data = 'Hello, client!';
  client.send(tcpSendOptions).then(() => {
    console.log('send success');
  }).catch((err: Object) => {
    console.error('send fail: ' + JSON.stringify(err));
  });

  // 关闭与客户端的连接
  client.close().then(() => {
    console.log('close success');
  }).catch((err: BusinessError) => {
    console.log('close fail');
  });

  // 取消TCPSocketConnection相关的事件订阅
  setTimeout(() => {
    client.off("message");
    client.off("close");
  }, 10 * 1000);
});

// 取消TCPSocketServer相关的事件订阅
setTimeout(() => {
  tcpServer.off("connect");
}, 30 * 1000);
分享
微博
QQ
微信
回复
1天前
相关问题
Socket接口库可以绑定域名吗
606浏览 • 1回复 待解决
如何修改ubuntu上memcached绑定IP?
1943浏览 • 1回复 待解决
HarmonyOS Tcp socket问题
45浏览 • 1回复 待解决
华为交换机如何配置端口绑定mac或ip
7786浏览 • 0回复 待解决
HarmonyOS $$双向绑定问题
318浏览 • 1回复 待解决
socket连接NetAddress获取问题
423浏览 • 1回复 待解决
HarmonyOS 经典蓝牙的socket通信问题
375浏览 • 1回复 待解决
openharmony 基于arkts的socket连接问题
4159浏览 • 1回复 待解决
HarmonyOS 有关中心仓 socket-io的问题
128浏览 • 1回复 待解决
元数据绑定框架使用问题
6015浏览 • 1回复 待解决
HarmonyOS 关于Socket
66浏览 • 1回复 待解决
ohos.net.socket (Socket连接)链接不上
5650浏览 • 1回复 待解决
HarmonyOS TextInput绑定自定义键盘问题
584浏览 • 1回复 待解决
HarmonyOS 获取本机ip地址
62浏览 • 1回复 待解决
HarmonyOS 如何获取设备ip
68浏览 • 1回复 待解决
单向绑定问题,有知道方法的吗?
788浏览 • 1回复 待解决