【问题标题】:Port availability check on remote system远程系统上的端口可用性检查
【发布时间】:2012-01-03 05:16:26
【问题描述】:

如何在 NSIS 页面中判断给定端口在本地或远程系统上是否可用?

【问题讨论】:

  • COM 端口?绑定到 IP 套接字?

标签: port nsis


【解决方案1】:

关于 COM 端口:

它们不能直接从 NSIS 检测到,所以用 C 编写一个简单的插件,它将通过端口号检测端口。

这是我的基本想法:

void GetListOfLocalPorts(CList<CString, CString>& o_lstPorts)
{
for( int i = 1; i <= 99; i++ )
{
    DCB dcb;
    HANDLE hCom = NULL;
    BYTE byPort = (BYTE)i;

    CString strPort;
    strPort.Format("COM%d", i);

    CString strCom = (CString)"\\\\.\\" + strPort;
    SetErrorMode(SEM_FAILCRITICALERRORS);

    try
    {
        hCom = CreateFile(strCom, 0, 0, NULL, OPEN_EXISTING, 0, NULL);

        if (hCom == INVALID_HANDLE_VALUE) 
            continue;
        BOOL fSuccess = GetCommState(hCom, &dcb);
        CloseHandle(hCom);
        if (!fSuccess) 
            continue;

    // Port exists on this machine
        o_lstPorts.AddTail(strPort);
    }
    catch(...)
    {
    }
}
}

【讨论】:

  • 这段代码很容易用系统插件调用,但它只是本地系统,问题是关于远程系统的。我猜 WMI 可能会工作......
  • 如何在我的 .nsi 文件中使用上述代码。请告诉我
  • @Slappy - 嗨,Slappy,我实际上需要本地系统端口可用性检查本身的帮助。你能告诉我如何将你的代码或我的代码(我在 java 中有代码)转换为插件,以及如何在我的 .nsi 文件中使用它
猜你喜欢
  • 1970-01-01
  • 2014-05-19
  • 2010-09-12
  • 1970-01-01
  • 2013-10-13
  • 2017-03-13
  • 2014-08-14
  • 2010-10-26
相关资源
最近更新 更多