检查 TCP 端口是否可用(未侦听或连接)

2024-03-05

我使用以下代码来检查端口是否可用:

bool ClassA::CheckPortTCP(short int dwPort , char *ipAddressStr)  
{  
    struct sockaddr_in client;         
    int sock;   

    client.sin_family = AF_INET;  
    client.sin_port = htons(dwPort);  
    client.sin_addr.S_un.S_addr = inet_addr(ipAddressStr);      

    sock = (int) socket(AF_INET, SOCK_STREAM, 0);  

    int result = connect(sock, (struct sockaddr *) &client,sizeof(client)); 

    // change to result == 0 -> failure in writing code too quick ;-)
    if (result = 0) return true; // port is active and used
    else return false; 
}  

问题是如果端口打开但未连接,则检查失败!如何轻松检查端口是否可用(未侦听、未连接)?

例如端口 21111(netstat 的输出)-> 我的函数无法识别该端口不是空闲的

TCP    0.0.0.0:21111          xxxxDUMMYxxxx:0       LISTENING

Thx


你有两个错误:第一个是if声明你assign零到result。另一个是connect回报-1连接失败时为非负值,如果成功连接则为非负值。

还有一个问题是,如果您设法连接,则不会关闭该连接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 TCP 端口是否可用(未侦听或连接) 的相关文章

随机推荐

  • 使用 canvaskit 进行 Flutter Web 构建:无法加载 Image.network()

    I can t use the image URL from my domain but I can use the image URL from another domain like Facebook The error is 当将 S
  • 如何从 MySQL 表中的多个列中获取指定最小长度的所有不同单词?

    在 MySQL 5 6 数据库中我有表tablename其中有 包括其他 三个TEXT列 col a col b col c 我想从这三列中提取所有至少 5 个字符长的唯一单词 单词之间用空格分隔 我所说的 单词 是指任何非空格字符的字符串
  • 在故事板中重用 uiview xib

    我通常喜欢在界面生成器中创建和设计我的 uiview 有时我需要在 xib 中创建单个视图 该视图可以在故事板的多个视图控制器中重用 在故事板中重用并渲染 xib 使用 Swift 2 2 和 Xcode 7 3 1 进行测试 1 创建一个
  • 在 .NET 中打开 pdf

    在我们正在开发的应用程序中 我们正在尝试实现帮助 我们有一个 pdf 帮助文档 目前认为当用户单击帮助按钮时仅打开 pdf 是可以接受的 该应用程序是一个桌面应用程序 pdf 文件需要以某种方式包含在安装中并安装在本地计算机上 我本质上需要
  • Lua 注册表与轻用户数据和引用有什么区别?

    因此 使用 Lua C API 您可以在注册表中保存 Lua 值并在以后检索它 有不同的方法可以做到这一点 您可以创建一个变量并使用它的指针作为注册表中的键 因为它始终是唯一的 您可以将指针作为轻用户数据推送 您还可以使用创建参考LuaL
  • Azure Sql 中的 Active Directory(AD) 身份验证不起作用

    我正在尝试让 Azure AD 身份验证针对我的 Azure SQL 数据库工作 我创建了一个 PaaS 数据库及其关联的 PaaS Sql Server 我将我的 Azure AD 帐户分配为 PaaS Sql Server 的 Acti
  • 在 iOS 上估计到 iBeacon 的距离

    我正在尝试估计从 iOS 设备到 iBeacon 的距离 我知道距离估计不是非常准确 而且我也知道这个公式 https electronics stackexchange com questions 83354 calculate dist
  • 我的数据触发绑定有什么问题?

    我创建了一个附加属性来扩展具有附加状态的 Button 类
  • HttpSession request.getSession(false)

    我有个问题 在我的servlet在 glassfish 中我称之为方法request getSession false 它应该return null 但相反 总是有一个session回 而且 如果我invalidate the sessio
  • docker构建发布插件出错

    你能帮我配置一下吗jenkins docker 构建发布插件 https wiki jenkins ci org display JENKINS Docker build publish Plugin 我已经为 docker repo 设置
  • ImageIO.read(getClass().getResourceAsStream (input==NULL) 出现错误?

    当我使用以下代码时 我不断收到此错误 try image ImageIO read getClass getResourceAsStream build classes javaproject Space gif catch IOExcep
  • int 变量的大小

    int的大小是如何决定的 int 的大小是否真的取决于处理器 对于 32 位机器 它是 32 位 对于 16 位机器 它是 16 在我的机器上 它显示为 32 位 尽管该机器安装了 64 位处理器和 64 位 Ubuntu 这取决于实施 C
  • 如何使用 Flutter 下载文件并将其存储在 Downloads 文件夹中

    我正在使用 Flutter 1 10 3 构建一个应用程序 但将图像下载到设备的下载文件夹时遇到困难 是否可以选择在不使用任何第三部分库的情况下执行此操作 添加一些必需的依赖项 我有一个仅适用于 android 的测试演示 请查阅file
  • Node.js 文档未定义

    为什么node js无法识别document GetElementById 它说 ReferenceError 文档未定义 我能做些什么 ReferenceError document is not defined at Object
  • 如何从 ISBN 号获取书名? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正计划为我的个人藏书创建一个小型网站 为了稍微自动化该过程 我想创建以下功能 该网站会询问我该书的 ISBN 号 然后自动获取书名并
  • 如何中止使用 ThreadPool.QueueUserWorkItem 创建的线程

    有没有办法中止使用 QueueUserWorkItem 创建的线程 或者也许我不需要 如果主应用程序退出会发生什么 从它创建的所有线程都会自动中止吗 你不需要中止它们 当您的应用程序退出时 NET 将终止 IsBackground true
  • ld-linux --验证退出代码

    检查 usr bin ldd 的源代码 我发现它使用 ld linux 来查找可执行文件的依赖项 尽管它首先使用 verify 参数调用 ld linux 然后 脚本根据 ld linux verify 调用的退出代码采取不同的行为 ld
  • HTML5画布,保存jpeg blob并从blob恢复到画布

    我有一块画布 mycanvas其中包含图像 我想从该图像创建一个斑点 最好是 jpeg 格式 这是我创建 blob 的方法 document getElementById mycanvas toDataURL image jpeg repl
  • 比较数组与 jQuery [重复]

    这个问题在这里已经有答案了 可能的重复 javascript中数组交集的最简单代码 https stackoverflow com questions 1885557 simplest code for array intersection
  • 检查 TCP 端口是否可用(未侦听或连接)

    我使用以下代码来检查端口是否可用 bool ClassA CheckPortTCP short int dwPort char ipAddressStr struct sockaddr in client int sock client s