C/C++使用socket实现判断ip是否能连通
更新时间:2023年07月19日 17:22:03 作者:王牌飞行员_里海
这篇文章主要为大家详细介绍了C/C++如何使用socket实现判断ip是否能连通,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
简介
使用socket判断ip是否能联通
效果
代码
#include <iostream> #include <cstdlib> #include <cstdio> #include <winsock2.h> #include <string> #include <chrono> #pragma comment(lib, "ws2_32.lib") using namespace std; bool canConnectToRouter(string ipAddress) { WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) // 初始化Windows Socket库 return false; int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // 创建一个TCP socket if (sockfd < 0) return false; struct sockaddr_in serveraddr; serveraddr.sin_addr.s_addr = inet_addr(ipAddress.c_str()); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(139); int ret = connect(sockfd, (struct sockaddr*)&serveraddr, sizeof(serveraddr)); // 连接服务器 if (ret < 0) { closesocket(sockfd); return false; } closesocket(sockfd); return true; } int main() { for (int i = 0; i < 256; i++) { string ip = "192.168.16." + to_string(i); std::cout << ip << "\t"; auto start = chrono::steady_clock::now(); // 记录开始时间 if (canConnectToRouter(ip.c_str())) std::cout << "InCompany\t"; else std::cout << "NotInCompany\t"; auto end = chrono::steady_clock::now(); // 记录结束时间 auto duration = chrono::duration_cast<chrono::milliseconds>(end - start); // 计算执行时间,单位为毫秒 cout << "耗时:" << duration.count() << "毫秒" << endl; } cin.get(); }
到此这篇关于C/C++使用socket实现判断ip是否能连通的文章就介绍到这了,更多相关C++ socket判断ip是否连通内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
MoveWindow() SetWindowPos()的区别于联系
这篇文章主要介绍了VC++中MoveWindow() SetWindowPos()的区别于联系,需要的朋友可以参考下2015-01-01利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突问
这篇文章主要介绍了利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突,本文给大家分享完美解决方案,需要的朋友可以参考下2023-03-03C++ Cartographer源码中关于传感器的数据传递实现
这篇文章主要介绍了C++ Cartographer源码中关于传感器的数据传递实现,前面已经谈到了Cartographer中添加轨迹的方法和传感器的数据流动走向。发现在此调用了LaunchSubscribers这个函数来订阅相关传感器数据2023-03-03
最新评论