当前位置:  技术问答>linux和unix

非阻塞connect实现端口扫描的问题-connect提前返回怎么处理?

    来源: 互联网  发布时间:2016-03-21

    本文导语:  用非阻塞connect来实现,代码在后面给,先说问题(几种情况):    1. 有时运行没有任何输出(扫的是内网的另一台机器,有几个端口打开的),但是马上再运行一次又可以了(有时能扫出所有的端口,有时只有一部分) ...

用非阻塞connect来实现,代码在后面给,先说问题(几种情况):

   1. 有时运行没有任何输出(扫的是内网的另一台机器,有几个端口打开的),但是马上再运行一次又可以了(有时能扫出所有的端口,有时只有一部分)
   2. 和1不同的是,第一次运行可以扫出部分端口,有时连续运行几次都只能扫出几个,而不是全部
   3. 正常


我怀疑是在select之前就有connect返回,不知道这个是怎么处理的呢?网上也没找到这样的资料,而且多数端口扫描程序都是阻塞的,根本没用。

希望大家都来帮个忙吧,也讨论下~~下面把代码贴出来!
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define MINPORT 0
#define MAXPORT 1000

int main(int argc,char **argv)
{
        int fd[MAXPORT];
        int flags,n,i,rst;
        int port[MAXPORT];
        struct sockaddr_in addr[MAXPORT];
        fd_set rset,wset;
        struct timeval tm;
        int addrsize=sizeof(struct sockaddr);
        struct servent *sent;

        FD_ZERO(&rset);
        FD_ZERO(&wset);
        tm.tv_sec=5;
        tm.tv_usec=0;
for(i=MINPORT;i

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • select如何实现发送的阻塞和解除阻塞?
  • Linux下read函数默认到底是阻塞的还是非阻塞的?
  • 如何从阻塞式的read中取得阻塞了多少时间?
  • Select() 是否只能在非阻塞IO里使用,在阻塞IO里可以使用吗?
  • 请教sleep和pthread_delay_np:阻塞线程/阻塞进程?
  • recvfrom函数,已经设置好非阻塞模式,是否还存在阻塞的风险?
  • 怎么解除recvfrom阻塞的阻塞状态
  • linux 如何用SOCKET设置函数设置阻塞和非阻塞?
  • 非阻塞SOCKET,竟然也会阻塞?
  • 请教:线程中调用一个阻塞的方法后,进程及其它线程会阻塞么?
  • linux C socke编程 创建的socket默认是阻塞的还是非阻塞的?
  • 怎么样以非阻塞的方式从管道中读取数据?因为我用read函数时,如果管道没有数据就会阻塞住???
  • 什么是非阻塞啊?我用下面的程序设计的,用非阻塞和不用都一样啊?
  • 初级问题,socket(AF_INET, SOCK_STREAM, 0)是阻塞式还是非阻塞式?
  • 请问:我发现在linux上的网络编程时, 若客户端连不上服务端,就会阻塞,但如果是在UNIX上,若连不上,会马上返回,并不阻 塞,怎样让它也能阻塞啊?
  • 关于socket编程中阻塞的问题
  • linux fwrite 阻塞问题
  • 关于非阻塞I/O
  • 如何判断一个线程是否处于阻塞状态
  • 关于fread是否会阻塞的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3