【软件教程】如何用C++检查TCP或UDP端口是否被占用

这篇具有很好参考价值的文章主要介绍了【软件教程】如何用C++检查TCP或UDP端口是否被占用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、检查步骤

  1. 使用socket函数创建socket_fd套接字。
  2. 使用sockaddr_in结构体配置协议和端口号。
  3. 使用bind函数尝试与端口进行绑定,成功返回0表示未被占用,失败返回-1表示已被占用。

二、CODE

其中port需要修改为想要检测的端口号,也可以将代码改写为根据argv参数检测。文章来源地址https://www.toymoban.com/news/detail-765927.html

#include <iostream>
#include <winsock2.h> // Windows套接字编程头文件
// #include <sys/socket.h> // Unix/Linux套接字编程头文件
#include <Windows.h>

int main() {
    // WSAStartup用于初始化 Winsock 库,它在进行套接字编程之前需要调用。
    // MAKEWORD(2,2)表示请求2.2版本
    // wsaData用于接收WinSock初始化的信息
    WSADATA wsaData;
    int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (iResult != NO_ERROR) {
        wprintf(L"WSAStartup failed with error: %ld\n", iResult);
        return 1;
    }
	// 上面代码只有windows需要加,linux不需要


    int port = 80; // 要检查的端口号

    // 创建套接字
    SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); // For Windows
    // int sock = socket(AF_INET, SOCK_STREAM, 0); // For Unix/Linux
    
    if (sock == INVALID_SOCKET) {
        std::cerr << "Error creating socket" << std::endl;
        return 1;
    }
	
    // 设置服务器地址信息
    sockaddr_in serverAddress;
    // 将serverAddress内存全部写0
    ZeroMemory(&serverAddress,sizeof(serverAddress));
    serverAddress.sin_family = AF_INET;
    serverAddress.sin_port = htons(port);
    serverAddress.sin_addr.s_addr = INADDR_ANY;

    // 尝试绑定套接字到指定端口
    int result = bind(sock, (struct sockaddr*)&serverAddress, sizeof(serverAddress));

    if (result == 0) {
        std::cout << "Port " << port << " is available" << std::endl;
    } else {
        std::cerr << "Port " << port << " is already in use" << std::endl;
    }

    // 关闭套接字
    closesocket(sock); // For Windows
    // close(sock); // For Unix/Linux

    return 0;
}

三、运行结果

  1. 使用以下命令行编译cpp代码,其中checkPort.cpp为源文件,checkPort为输出可执行文件,-lws2_32用于链接Windows的Winsock2库。
    g++ .\checkPort.cpp -o checkPort -lws2_32
  2. 以下命令行运行可执行文件
    .\checkPort.exe
  3. 如果端口未被占用,则会输出以下内容。
    c检测端口占用,软件教程,socket编程
  4. 如果端口已被占用,则会输出以下内容。
    c检测端口占用,软件教程,socket编程
  5. 如果windows下输出以下内容,一般来说是因为WSAStartup没有配置。
    c检测端口占用,软件教程,socket编程

到了这里,关于【软件教程】如何用C++检查TCP或UDP端口是否被占用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ToDesk软件安装教程(远程办公必备软件)

    ToDesk是一款远程控制软件。不仅可以轻松穿透内网和防火墙,而且支持远程关机、待机,具有录屏、调节分辨率、文件传输、语音视频通讯等功能。ToDesk有超快的1080P高清屏幕控制,文件传输,多区域机房、G级宽带服务器加速以确保用户每一次的远程访问稳定、流畅。 目录

    2024年02月10日
    浏览(62)
  • 云服务器:开放TCP、UDP端口

            众所周知,电脑设备有些端口默认是不开放的,我们使用TCP或者UDP去连接没有开放端口时就会被防火墙拦截,所以就需要到电脑防火墙设置里面把需要用到的端口开放出来。操作如下:         1.打开防火墙(可以直接搜索)         2.新建规则       

    2024年02月03日
    浏览(37)
  • socket端口复用之TCP和UDP

    目录 1.什么是端口复用? 2.多个socket可以绑定同一个端口吗? 3.绑定同一端口的多个套接字如何接收数据? 4.SO_REUSEADDR和SO_REUSEPORT选项设置 5.SO_REUSEADDR和SO_REUSEPORT在实际中的运用? 5.1 解决TCP套接字处于TIME_WAIT状态占用端口号问题。 5.2 程序重启后后,端口未释放导致程序重启

    2024年02月07日
    浏览(29)
  • 删除流氓软件教程

    先下载火绒安全网址https://www.huorong.cn/ 下载完成后安装 点击安全工具,然后点弹窗拦截,可以拦截一下基本的广告 下载SoftCnKiller软件,网址https://free.lanzoux.com/iKexlyw9p4j 双击这个文件自动解压,然后点击使用前更新流氓软件黑名单,打开dos窗口后,输入1自动更新 双击Softcnk

    2024年02月10日
    浏览(31)
  • AI Toolkit软件安装教程(附软件下载地址)

    软件【 下载地址 】获取方式见文末。注:推荐使用,更贴合此安装方法! AI Toolkit是一款卓越的人工智能软件,专为企业和个人提供一体化的解决方案,助力其工作流程高效运转。该软件套件融合了多种顶尖人工智能技术工具,包括智能聊天机器人、光学字符识别(OCR)、文本

    2024年01月25日
    浏览(57)
  • UDP和TCP可以使用同一个端口吗?

    之前有读者在面试的时候,被问到: TCP 和 UDP 可以同时监听相同的端口吗? 关于端口的知识点,还是挺多可以讲的,比如还可以牵扯到这几个问题: 多个 TCP 服务进程可以同时绑定同一个端口吗? 客户端的端口可以重复使用吗? 客户端 TCP 连接 TIME_WAIT 状态过多,会导致端

    2023年04月08日
    浏览(36)
  • 【软件实战】5分钟拥有一款自己的软件(教程+成品展示)

    5分钟,看完教程,每个人都能拥有一款属于自己的软件 这是我设计的软件安装程序LOGO 1.Easy code 我们先来写一个简单的按钮跳转网页,看看它能否实现华丽转身 2.网页效果 这是普通HTML网页效果图 3.软件效果 这是变成exe文件的效果 下面是 九芒星_示例软件 的下载链接,好奇

    2024年02月08日
    浏览(45)
  • 《软件安装与使用教程》— Git 在Windows的安装教程

    本文提供Windows 64bit下载链接: 或2贰进制公众号获取 或者在文末公众号下载 也可以在官网下载安装包,下载速度较慢,下载地址: https://git-scm.com/downloads 根据操作系统选择,本文以Windows 64bit为例 根据系统选择32或者64bit 打开下载链接,下载提供的压缩包,解压后获得下图文

    2024年03月24日
    浏览(43)
  • Adams2020软件安装教程

    目录 一、软件简介 二、软件下载 三、软件安装 Adams是一款多领域仿真软件,可以对机械、电子、流体、化学等系统进行建模、仿真和分析。Adams具有强大的动力学分析功能,可以模拟多种复杂系统的运动、力学、热力学和控制行为,包括机械系统、车辆、航空航天系统、机

    2023年04月16日
    浏览(24)
  • Wireshark软件的使用教程

    目录 1.下载并安装Wireshark软件  2.运行wireshark 3. 抓取分组操作 4.Wireshark窗口功能 5.筛选分组操作 6.分组信息分析 7.分组头部信息查看  8.分组内容查看 WireShark 是一种可以运行在 Windows , UNIX , Linux 等操作系统上的分组分析器。运行 Wireshark ,需要有一台支持 Wireshark 和 libpc

    2024年02月07日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包