心平气和码代码 2024-11-01 13:04 采纳率: 0%
浏览 24

工控机不能连WIFI怎么进行远程控制

想用nomachine在自己的电脑上控制工控机,但是工控机不能连WIFI,平时联网都是手机插usb共享网络。
尝试过手机插工控机,同时手机开热点让电脑连接,发现nomachine无法识别,热点和共享不算在同一局域网下吗

  • 写回答

1条回答 默认 最新

  • 越重天 新星创作者: Java技术领域 2024-11-02 23:49
    关注

    本答案参考 多次询问 ChatGPT-3.5 后选择的最佳回答,若是满意,还请采纳,谢谢

    1. 通过有线网络进行远程控制(如果可行)
      • 如果工控机有以太网接口,可以将工控机和你的本地电脑连接到同一个路由器的有线网络中。
      • 在这种情况下,确保工控机和本地电脑在同一网段,例如,工控机的IP地址为192.168.1.100,本地电脑的IP地址为192.168.1.101(假设子网掩码为255.255.255.0)。
      • 然后在本地电脑上使用NoMachine软件,输入工控机的IP地址进行连接。
    2. 使用反向代理或远程桌面工具的特殊设置(针对不同网络情况)
      • 设置端口转发(如果有可用的路由器管理权限)
        • 如果工控机通过手机共享网络连接到互联网,而你想从外部网络(如你的家庭网络中的电脑)进行远程控制。
        • 假设手机共享网络的IP地址为172.20.10.5(这是手机共享网络分配给工控机的IP地址示例),并且手机有公网IP(通过运营商网络)。
        • 登录到手机的网络设置(如果支持)或联系运营商(如果运营商提供此功能),设置端口转发。例如,将外部端口5900(NoMachine默认端口)转发到工控机的5900端口。
        • 然后在本地电脑上,使用手机的公网IP地址和转发后的端口号在NoMachine中进行连接。
      • 使用TeamViewer或其他支持穿透网络的远程控制软件
        • 一些远程控制软件具有网络穿透功能,如TeamViewer。
        • 在工控机和本地电脑上分别安装TeamViewer软件。
        • 在工控机上启动TeamViewer并记录下设备的ID和密码(如果是无人值守访问,需要设置固定密码等相关选项)。
        • 在本地电脑上的TeamViewer软件中输入工控机的ID和密码进行连接。
    3. 关于热点和共享网络不在同一局域网的问题
      • 热点和USB共享网络通常不在同一局域网下。
      • 当手机通过USB共享网络时,它为工控机创建了一个网络连接,而当手机开启热点时,电脑连接的是手机的另一个网络接口创建的网络,这两个网络在网络拓扑结构上是不同的,所以NoMachine无法直接识别。

    以下是一个简单的C++ 示例代码片段,用于获取本地网络接口信息(仅为示例,与远程控制问题相关但不完全是解决方案):

    #include <iostream>
    #include <windows.h>  // 适用于Windows系统,获取网络接口信息
    #include <iphlpapi.h>
    #pragma comment(lib, "iphlpapi.lib")
    
    void printNetworkInterfaces() {
        PIP_ADAPTER_INFO pAdapterInfo;
        PIP_ADAPTER_INFO pAdapter = NULL;
        DWORD dwRetVal = 0;
    
        ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
        pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen);
        if (pAdapterInfo == NULL) {
            std::cout << "Error allocating memory needed to call GetAdaptersInfo" << std::endl;
            return;
        }
    
        // 调用GetAdaptersInfo获取网络接口信息
        if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == ERROR_BUFFER_OVERFLOW) {
            free(pAdapterInfo);
            pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen);
            if (pAdapterInfo == NULL) {
                std::cout << "Error allocating memory needed to call GetAdaptersInfo" << std::endl;
                return;
            }
        }
        if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
            pAdapter = pAdapterInfo;
            while (pAdapter) {
                std::cout << "Adapter Name: " << pAdapter->AdapterName << std::endl;
                std::cout << "Adapter Description: " << pAdapter->Description << std::endl;
                std::cout << "Adapter IP Address: " << pAdapter->IpAddressList.IpAddress.String << std::endl;
                pAdapter = pAdapter->Next;
            }
        } else {
            std::cout << "GetAdaptersInfo failed with error: " << dwRetVal << std::endl;
        }
        if (pAdapterInfo) {
            free(pAdapterInfo);
        }
    }
    

    你可以在主函数中调用printNetworkInterfaces函数来查看本地网络接口信息,这有助于理解网络连接情况,以便更好地解决远程控制中的网络相关问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月1日