主页 > 知识库 > Go语言实现的简单网络端口扫描方法

Go语言实现的简单网络端口扫描方法

热门标签:旅游厕所如何电子地图标注 外呼系统多少钱一年 工商信用卡外呼系统教程 经常接到推销电话机器人的电话 智能营销软件 海外照相馆地图标注入驻 滁州自建外呼系统 外呼系统如何接收服务密码 客服级电销机器人

本文实例讲述了Go语言实现的简单网络端口扫描方法。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:
package main
import (
 "net"
 "fmt"
 "os"
 "runtime"
 "time"
 "strconv"
)

func loop(startport, endport int, inport chan int) {
  for i := startport; i = endport; i++{
   inport - i
  }
}

func scanner(inport, outport, out chan int, ip net.IP, endport int){
 for{
  in := - inport
  //fmt.Println(in)
  tcpaddr := net.TCPAddr{ip,in}
  conn, err := net.DialTCP("tcp", nil, tcpaddr)
  if err != nil {
   outport - 0
  }else{
   outport - in
  }
  conn.Close()
  if in == endport{
   out - in
  }
 }
}

func main() {
 starttime := time.Now().Unix()
 runtime.GOMAXPROCS(4)
 inport := make(chan int)
 outport := make(chan int)
 out := make(chan int)
 collect := []int{}
 if len(os.Args) != 4 {
  fmt.Println("Usage: scanner.exe IP startport endport")
  fmt.Println("Endport must be larger than startport")
  os.Exit(0)
 }
 ip := net.ParseIP(os.Args[1])
 if(os.Args[3] os.Args[2]) {
  fmt.Println("Usage: scanner IP startport endport")
  fmt.Println("Endport must be larger than startport")
  os.Exit(0)
 }
 startport, _:= strconv.Atoi(os.Args[2])
 endport, _ := strconv.Atoi(os.Args[3])
 go loop(startport, endport, inport)
 for{
  select {
   case -out:
    fmt.Println(collect)
    endtime := time.Now().Unix()
    fmt.Println("The scan process has spent ",endtime-starttime,"second")
    os.Exit(0)
   default:
    go scanner(inport, outport, out, ip, endport)
    port := - outport
    
    if port != 0{
     collect = append(collect, port)
    }
  }  
 }
}

希望本文所述对大家的Go语言程序设计有所帮助。

您可能感兴趣的文章:
  • go语言制作端口扫描器
  • GO语言实现的端口扫描器分享
  • go 实现简易端口扫描的示例

标签:本溪 喀什 楚雄 湘潭 运城 深圳 九江 晋城

巨人网络通讯声明:本文标题《Go语言实现的简单网络端口扫描方法》,本文关键词  语言,实现,的,简单,网络,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Go语言实现的简单网络端口扫描方法》相关的同类信息!
  • 本页收集关于Go语言实现的简单网络端口扫描方法的相关信息资讯供网民参考!
  • 推荐文章