C/C++使用socket實現(xiàn)判斷ip是否能連通
更新時間:2023年07月19日 17:22:03 作者:王牌飛行員_里海
這篇文章主要為大家詳細介紹了C/C++如何使用socket實現(xiàn)判斷ip是否能連通,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下
簡介
使用socket判斷ip是否能聯(lián)通
效果
代碼
#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); // 創(chuàng)建一個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); // 計算執(zhí)行時間,單位為毫秒 cout << "耗時:" << duration.count() << "毫秒" << endl; } cin.get(); }
到此這篇關于C/C++使用socket實現(xiàn)判斷ip是否能連通的文章就介紹到這了,更多相關C++ socket判斷ip是否連通內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言 數(shù)據(jù)結構之連續(xù)存儲數(shù)組的算法
這篇文章主要介紹了C語言 數(shù)據(jù)結構之連續(xù)存儲數(shù)組的算法的相關資料,需要的朋友可以參考下2017-01-01如何判斷一個數(shù)是否為2的冪次方?若是,并判斷出來是多少次方?
本篇文章是對如何判斷一個數(shù)是否為2的冪次方?若是,并判斷出來是多少次方的實現(xiàn)方法,進行了詳細的分析介紹,需要的朋友參考下2013-05-05