欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言實現(xiàn)的簡單網(wǎng)絡端口掃描方法

 更新時間:2015年02月20日 16:16:36   作者:不吃皮蛋  
這篇文章主要介紹了Go語言實現(xiàn)的簡單網(wǎng)絡端口掃描方法,實例分析了Go語言網(wǎng)絡程序的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Go語言實現(xiàn)的簡單網(wǎng)絡端口掃描方法。分享給大家供大家參考。具體實現(xiàn)方法如下:

復制代碼 代碼如下:
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語言程序設計有所幫助。

相關文章

  • 使用Golang實現(xiàn)加權負載均衡算法的實現(xiàn)代碼

    使用Golang實現(xiàn)加權負載均衡算法的實現(xiàn)代碼

    這篇文章主要介紹了使用Golang實現(xiàn)加權負載均衡算法的實現(xiàn)代碼,詳細說明權重轉發(fā)算法的實現(xiàn),通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Go Java算法之單詞規(guī)律示例詳解

    Go Java算法之單詞規(guī)律示例詳解

    這篇文章主要為大家介紹了Go Java算法之單詞規(guī)律示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Go語言中函數(shù)可變參數(shù)(Variadic Parameter)詳解

    Go語言中函數(shù)可變參數(shù)(Variadic Parameter)詳解

    在Python中,在函數(shù)參數(shù)不確定數(shù)量的情況下,可以動態(tài)在函數(shù)內獲取參數(shù)。在Go語言中,也有類似的實現(xiàn)方式,本文就來為大家詳細講解一下
    2022-07-07
  • Golang截取字符串方法示例講解及對比

    Golang截取字符串方法示例講解及對比

    這篇文章主要介紹了Golang截取字符串方法,文中介紹了使用rune函數(shù)和utf包以及range遍歷的方式,熟練掌握這些可以幫助我們更方便地處理字符串,提高編程效率和代碼質量,感興趣的同學可以參考下文
    2023-05-05
  • 詳解Go語言中net/http包的使用

    詳解Go語言中net/http包的使用

    Go語言內置的?net/http?包十分的優(yōu)秀,提供了HTTP客戶端和服務端的實現(xiàn),本文主要就來和大家聊聊net/http包的使用,感興趣的可以了解一下
    2023-07-07
  • VS?Code安裝go插件失敗原因分析以及解決方案

    VS?Code安裝go插件失敗原因分析以及解決方案

    vscode安裝go插件時,由于各種原因,在安裝插件時總是失敗,下面這篇文章主要給大家介紹了關于VS?Code安裝go插件失敗原因分析以及解決的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • golang flag簡單用法

    golang flag簡單用法

    本篇文章介紹了golang flag包的一個簡單的用法,希望通過一個簡單的實例,能讓大家了解它的用法,從中獲得啟發(fā)
    2018-09-09
  • GPT回答:go語言和C語言切片對比

    GPT回答:go語言和C語言切片對比

    這篇文章主要為大家介紹了GPT回答:go語言和C語言切片對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • go語言實現(xiàn)markdown解析庫的方法示例

    go語言實現(xiàn)markdown解析庫的方法示例

    這篇文章主要介紹了go語言實現(xiàn)markdown解析庫的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • 超詳細Go語言中JSON處理技巧分享

    超詳細Go語言中JSON處理技巧分享

    這篇文章主要為大家總結了go語言中對JSON數(shù)據(jù)結構和結構體之間相互轉換問題及解決方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-06-06

最新評論