tcp端口扫描器
1 package tcpScanner 2 3 import ( 4 "fmt" 5 "net" 6 "sort" 7 ) 8 9 /* 10 多通道通信 11 */ 12 13 func workerL(ports, results chan int) { 14 for p := range ports { 15 addr := fmt.Sprintf("124.223.113.130:%d", p) 16 conn, err := net.Dial("tcp", addr) 17 if err != nil { 18 results <- 0 19 continue 20 } 21 conn.Close() 22 results <- p 23 } 24 } 25 26 func Demo5() { 27 ports := make(chan int, 100) 28 results := make(chan int) 29 30 var openports []int 31 32 for i := 0; i < cap(ports); i++ { 33 go workerL(ports, results) 34 } 35 go func() { 36 for i := 0; i < 65535; i++ { 37 ports <- i 38 } 39 }() 40 for i := 0; i < 65535; i++ { 41 port := <-results 42 if port != 0 { 43 openports = append(openports, port) 44 } 45 } 46 close(ports) 47 close(results) 48 sort.Ints(openports) 49 50 for _, port := range openports { 51 fmt.Printf("%d open\n", port) 52 } 53 }
1 package main 2 3 import "tcpScanner/tcpScanner" 4 5 func main() { 6 tcpScanner.Demo5() 7 }