DevEco Studio虚拟机中怎么连接到主机的服务端程序

DevEco Studio虚拟机中怎么连接到主机的服务端程序

目前在主机中搭建了一个简单后端(Go,TCP通信),搭建鸿蒙前端怎么连接到后端?

目前后端在主机中测试是能正常运行的,

然后我在前端中使用的IP是10.0.2.2

端口与服务端端口一致,服务端尝试过监听127.0.0.1和0.0.0.0,但是都没有连接上的通知

我就给一下我连接到服务端的代码

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

export type receive = (value: socket.SocketMessageInfo) => string | null

export class Linker {
  link: socket.TCPSocket = socket.constructTCPSocketInstance();
  address: socket.NetAddress = {} as socket.NetAddress;

  private receive: receive | null = null

  init(){
    this.address.address = '10.0.2.2';
    this.address.port = 25054
    this.link.on('message', (mess: socket.SocketMessageInfo) => {
      let result: string = ""
      if (this.receive != null)
      {
        result = this.receive(mess)
      } else {
        result = "nothing"
      }
      this.receive = null
      return result
    })
    // 设置错误监听器(非常重要!)
    this.link.on('error', (err: BusinessError) => {
      console.error('Socket error:', err);
    });
  }

  connect(){
    let conn: socket.TCPConnectOptions = {} as socket.TCPConnectOptions
    conn.address = this.address
    conn.timeout = 9000
    this.link.connect(conn)
  }


  send(value: string, action: receive){
    this.receive = action
    let current_mess: socket.TCPSendOptions = {
      data: value
    }
    this.link.send(current_mess)
  }

}

3 回复

目前在能够完成局域网访问,但是本地映射还是不行


在DevEco Studio虚拟机中连接到主机的服务端程序,首先确保主机和虚拟机在同一网络下。在虚拟机中获取主机的IP地址,然后在DevEco Studio中配置网络连接,使用主机的IP地址和端口号进行连接。确保主机的防火墙允许该端口的通信。通过DevEco Studio的网络调试工具,可以测试连接是否成功。

在DevEco Studio虚拟机中连接主机服务端需要注意以下几点:

  1. 确认虚拟机网络配置正确:
  • 10.0.2.2是标准模拟器访问主机的特殊IP
  • 确保DevEco Studio使用的是标准模拟器而非远程设备
  1. 服务端配置建议:
  • 必须监听0.0.0.0而不是127.0.0.1
  • 检查主机防火墙是否放行了对应端口(25054)
  • 建议先用telnet或nc测试端口可达性
  1. 代码改进建议:
  • 添加connect回调监听连接状态
  • 增加更详细的错误处理

修改后的连接代码示例:

this.link.on('connect', () => {
  console.log('Socket connected');
});

this.link.connect(conn).catch((err: BusinessError) => {
  console.error('Connect failed:', err.code, err.message);
});
  1. 常见问题排查:
  • 确认服务端程序确实在运行且没有报错
  • 检查主机和虚拟机时间同步(证书验证可能受影响)
  • 尝试更换其他端口测试

如果仍有问题,建议先用简单的ping测试网络连通性,再逐步排查TCP连接问题。

回到顶部