C\C++ 使用socket判断ip是否能连通

文章作者:里海
来源网站:https://blog.csdn.net/WangPaiFeiXingYuan


简介:

使用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";elsestd::cout << "NotInCompany\t";auto end = chrono::steady_clock::now(); // 记录结束时间  auto duration = chrono::duration_cast<chrono::milliseconds>(end - start); // 计算执行时间,单位为毫秒  cout << "耗时:" << duration.count() << "毫秒" << endl;}cin.get();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27811.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【产品设计】功能型小程序的前后台原型设计

最近公司基于目前招聘兼职老师的流程做了一款小程序。之所以选择做小程序的原因&#xff0c;一方面是因为项目功能比较简单&#xff0c;没必要开发一款独立的APP&#xff1b;另一方面是因为小程序开发起来比较方便&#xff0c;节约开发成本&#xff0c;用户使用起来也比较方便。…

JavaScript中的JSON

一&#xff1a;分类  简单值&#xff1a;字符串、数值、布尔值和 null 可以在 JSON 中出现&#xff0c;就像在 JavaScript 中一样。特殊 值 undefined 不可以。 对象&#xff1a;第一种复杂数据类型&#xff0c;对象表示有序键/值对。每个值可以是简单值&#xff0c;也可以…

STM32F4_FLASH模拟EEPROM

目录 前言 1. 内部FLASH简介 2. 内部FLASH写入过程 3. 内部FLASH库函数 4. FLASH的读写保护及解除 5. FLASH相关寄存器 6. 实验程序 6.1 main.c 6.2 STMFlash.c 6.3 STMFlash.h 前言 STM32F4本身并没有自带EEPROM&#xff0c;但是STM32F4具有IAP功能&#xff0c;也就…

操作系统进行设备控制的方式

一.I/O控制方式 上一篇的博客介绍了设备管理的一些概念基础知识点&#xff0c;其中I/O控制方式这一块没有详细说明。设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送。外围设备和内存之间的输入/输出控制方式有4种&#xff0c;下面分别加以介绍。 二.程序直接控制…

Kotlin基础(五):类和接口

前言 本文主要讲解类和接口&#xff0c;主要包括类的声明、构造器、类成员、修饰符、类的继承、接口、抽象类。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 目录 1.1 类的声明 在 Kotlin 中&#xff0c;类的声明使用关键字 class。下面是一个简单的类声明的示例&…

高时空分辨率、高精度一体化预测技术的风、光、水自动化预测技术的应用

第一章 预测平台讲解及安装 一、高精度气象预测基础理论介绍 综合气象观测数值模拟模式&#xff1b; 全球预测模式、中尺度数值模式&#xff1b; 二、自动化预测平台介绍 Linux系统 Crontab定时任务执行机制 Bash脚本自动化编程 硬件需求简介 软件系统安装 …

【论文阅读】一些多轮对话文章的体会 ACL 2023

前言 本文是对昨天看到的ACL 2023三篇多轮对话文章的分享这三个工作都是根据一些额外属性控制输出的工作&#xff0c;且评估的方面比较相似&#xff0c;可以借鉴 方法 这几篇文章都不是做general任务的&#xff0c;倾向于通过一些额外信息&#xff0c;来做specific任务 【1】…

Linux的基本使用和web程序部署

注意&#xff1a;本文章不适合C学习者&#xff08;知识点远远不够&#xff09;&#xff0c;只适合Java学习者&#xff0c;学习简单的Linux命令 1.Linux的背景知识 1.1Linux是什么 Linux是一个操作系统&#xff0c;和Windows是“并列”的关系。经过多年的发展&#xff0c;Lin…

Three.js——十三、自定义大小画布、UI交互按钮以及3D场景交互、渲染画布为文件(图片)

画布全屏以及自定义大小画布 <!-- canvas元素默认是行内块元素 --> <divclass"model"style"background-color: #ff0000;"width"300"height"180" ></div>画布随窗口变化 // 画布跟随窗口变化 window.onresize fun…

Qt 项目架构之----MVC架构

MVC 模式代表 Model-View-Controller&#xff08;模型-视图-控制器&#xff09; 模式。这种模式用于应用程序的分层开发。 Model&#xff08;模型&#xff09;-是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View&#xff08;视图&#x…

2023 Testing Expo倒计时-聚焦风丘9003展位

请点击此处&#xff0c;即可进行在线登记报名并了解更多信息&#xff01;

25个高级SQL查询-列出结果集的前5行

本专栏中的许多示例将基于以下员工表(employee)。只有少数例子将以其他表格为基础;在这些情况下,表格将与示例一起进行说明。 一、WITH WITH AS 短语,也叫做子查询部分,定义一个SQL片断后,该SQL片断可以被整个SQL语句所用到。有的时候,with as 是为了提高SQL语句的可读…