端口扫描程序实现原理

本文介绍了端口扫描程序的实现原理,通过创建socket,连接目标IP的特定端口,根据连接返回值判断端口是否开放。文中还提及了使用多线程技术进行端口段的扫描,为每个线程分配不同的扫描任务。
摘要由CSDN通过智能技术生成

以前看过很多网络相关方面的程式源码, 但时间长了都忘了怎么实现的了, 因此,想将以后看过的源码实现方式记录下来, 以免下次再得找资源!

 

其实端口扫描程式的原理很简单, 利用socket连接指定IP的端口, 根据其返回值就可以得知目标机器是否开启了这个端口,

实现步骤如下:

1. 创建socket

    c_socket = socket ( AF_INET, SOCK_STREAM, 0 );
    if ( c_socket == SOCKET_ERROR )
    {
         printf (" create socket fault!/n ");
         return -1;
    }
2. 连接目示机器

    struct sockaddr_in remoteaddr;
    struct hostent*    remotehost;
    remoteaddr.sin_family = AF_INET;
    remoteaddr.sin_addr.s_addr   = inet_addr ( Address );
    remoteaddr.sin_port          = htons ( cPort );

 

    //连接
    if  ( connect ( c_socket, (SOCKADDR*) &remoteaddr, sizeof ( struct sockaddr_in ) ) == SOCKET_ERROR )
    {
         printf ("< %3d >  connect port %5d  .../n",ThreadID,cPort ) ;
         closesocket( c_socket);
         return -1;
    }
    closesocket( c_socket);

    printf ("< %3d >  connect port %5d  succeed/n",ThreadID,cPort ) ;

 

也可以利用多线程技术实现, 只要给每个线程分配好指定的扫描端口段就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值