zoukankan      html  css  js  c++  java
  • 端口快速扫描程序(c#版 一次可发起1000个连接)

    前言 为了探测本机或对方开放了哪些端口,需要用到端口扫描程序。扫描端口的原理很简单:就是尝试连接对方;如果成功,对方就开放了此端口。扫描程序的关键是速度,如果一次只能发起几个连接,显然速度太慢。如果对方的端口没开放,发起一次连接到知道连接失败通常需要几秒的时间。

    本程序可以实现一次性发起1000个连接(这个连接数可以设定),如果这1000个连接,有某个连接知道了结果,就会继续发起连接。总之,程序正在尝试的连接保持在1000个。这样扫描的速度就会大大增加。

    注:一次性发起的连接数可以远超1000个,但是这样可能会导致程序占用资源太多;再者,对方服务器发现大量有正在尝试的连接,可能会拒绝服务:即使有些端口开放了,也探测失败。

    下载地址:端口快速扫描程序。

    实现原理

    iocp是Windows下最高效的处理socket方式。iocp不仅可以作为服务端,也可以作为客户端发起连接,实现原理基本一样。如果客户端发起1000个连接,程序并不会启用1000个线程,而是充分利用了iocp底层处理机制。具体实现原理本文不多述。

    程序使用

    设置好ip和端口,点击添加,程序会开始扫描。扫描结果列表显示。可以将列表结果复制到剪切板。

    后记:程序的难点就是实现iocp封装。端口扫描只是iocp的一个小小的应用。本人多年前就开始接触iocp编程,对iocp实现了很好的封装;封装库非常易于使用,扫描程序就是使用此封装库实现的。只用短短的半天就开发完成。

  • 相关阅读:
    同余方程
    倒酒
    机器翻译
    vue 锚点定位
    解决vuex刷新页面数据丢失
    h5 input失去焦点软键盘把页面顶起
    js 监听ios手机键盘弹起和收起的事件
    js 将数组中的每一项安装奇偶重新组合成一个数组对象
    moment.js获取本周本月本年的开始日期和结束日期
    vue 所有的路由跳转加一个统一参数
  • 原文地址:https://www.cnblogs.com/yuanchenhui/p/iocp_scan.html
Copyright © 2011-2022 走看看