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

weixin_38048698 2019-09-12 12:56:39
我使用以下代码来检查端口是否可用: 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 谢谢
...全文
152 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38075729 2019-09-12
  • 打赏
  • 举报
回复
您有两个错误:第一个是在if语句中为结果分配零.另一个是连接失败时connect返回-1,如果连接失败则返回非负值. 还有一个问题是,如果您设法连接,则不要关闭该连接.

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧