= func (c runa) bool {return c == '.' } lisit: = strings.FieldsFunc (ip,canSplit) // [58215 20 30] //fmt.Println(lisit) ip1_str_int, _: = strconv.Atoi (lisit [0]) ip2_str_int, _: = strconv.Atoi (lisit [1]) ip3_str_int, _: = strconv.Atoi (lisit [2]) ip4_str_int, _: = strconv.Atoi (lisit [3]) return ip1_str_int << 24 | ip2_str_int << 16 | ip3_str_int << 8 | ip4_str_int } func num2ip (num int) cadena { ip1_int: = (num & 0xff000000) >> 24 ip2_int: = (num & 0x00ff0000) >> 16 ip3_int: = (num & 0x0000ff00) >> 8 ip4_int: = num & 0x000000ff / /fmt.Println(ip1_int) datos: = fmt.Sprintf ("% d.% d.% d.% d", ip1_int, ip2_int, ip3_int, ip4_int) } func gen_ip (Aip1 int, para índice <Aip2 { //fmt.Println(num2ip(index)) // 入 队, 压栈 ip_data: = num2ip (índice) //fmt.Println(ip_data) l.PushBack (ip_data) index ++ } } func text_add ( cadena de nombre, cadena de datos) {// 向 文件 中 写入 数据 text_add ("file2.txt", "qqqqqqqqqqqqqqqqqqqqqqq") f, err: = os.OpenFile (name, os.O_RDWR | os.O_CREATE | os.O_APPEND, 0x644) if err! = Nil { panic (err) } diferir f.Close () _, err = f.WriteString (data) _, err = f.WriteString ("\ r \ n") if err! = Nil { pánico (err) } } //text_add("file2.txt "," qqqqqqqqqqqqqqqqqqqqqqqq ") var l = list.New () func socket_ip (cadena de host, cadena de puerto) bool { var ( remoto = host +": "+ puerto ) tcpAddr, _: = net.ResolveTCPAddr ("tcp4", remoto) // 转换 IP 格式 //fmt.Printf("%s ", tcpAddr) conn, err: = net.DialTCP (" tcp ", nil, tcpAddr) // 查看 是否 连接成功 if err! = Nil { fmt.Printf ("no ==% s:% s \ r \ n", host, port) return false } diferir conn.Close () fmt.Printf ("ok ==% s: % s \ r \ n ", host, puerto) devuelve verdadero } func for_ip (cadena de puerto) { ahora: = hora.Now () año, lunes, día: = ahora.UTC (). Fecha () nombre_archivo: = fmt.Sprintf ("% d-% d-% d_% s", año, lunes, día, puerto) para {// Bucle sin fin if l.Len () <= 0 { fmt.Println ("out Loop ") break // # Rebotar } // Retirar i1 de la lectura anterior : = l.Front () l.Remove (i1) IP, _: = i1.Value. (String) if socket_ip (IP, puerto) { // OK // Obtenga la fecha actual como el nombre del archivo y escriba la IP en text_add (file_name + "_ ok.txt", IP) } // else { // text_add (file_name + "_ no.txt", IP) // } time .Sleep (time.Millisecond * 500) // Nanosegundo como una unidad } } func main () { argsLen: = len (os.Args) //fmt.Println(argsLen) if argsLen! = 4 { fmt.Println ("main.go 58.215.20.30 58.215.201.30 80") } else { gen_ip (ip2num (os.Args [1]), ip2num (os.Args [2])) para índice: = 0; índice <200; index ++ { go for_ip (os.Args [3]) } por { time.Sleep (1 * time.Second) // 纳秒 为 单位 } } }
GO language realiza escaneo de puertos
Supongo que te gusta
Origin blog.csdn.net/benli8541/article/details/112707214
Recomendado
Clasificación