C++端口扫描简单入门

端口扫描原理:用TCP去连接服务器,连接成功则该端口存在,否则不存在.

#include<WinSock2.h>
#include<stdio.h>
#pragma comment(lib,"ws2_32.lib")


bool PortScan(const char* ip, int port)
{
    WSADATA wsdata;
    SOCKET s;
    SOCKADDR_IN destip;
    WSAStartup(MAKEWORD(2, 2), &wsdata);

    s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    destip.sin_family = AF_INET;
    destip.sin_addr.S_un.S_addr = inet_addr(ip);
    destip.sin_port = htons(port);

    int ret = connect(s, (SOCKADDR *)&(destip), sizeof(destip));

    if (ret == SOCKET_ERROR)
    {
        return false;
    }

    closesocket(s);
    WSACleanup();
    return true;
}

int main()
{
    if (PortScan("121.51.142.21", 80))    //www.qq.com
        printf("121.51.142.21:80");
    else
        printf("Error");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Risehuxyc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值