1

入力アドレスを受け入れる機能を追加する前は、すべて正常に動作していました。

IP アドレスを 3 つのセグメントに分割し、それをgetHostName関数に引き渡した後、プログラムは関数の呼び出し後に「関数のすべて/インクルーシブ」をスキップしますnet.LookupAddr(ip)

package main

import (
    "fmt"
    "net"
    "strconv"
    "strings"
)

func getHostName(h chan string, ipAdresse string, n int) {
    ip := ipAdresse + strconv.Itoa(n)

    addr, ok := net.LookupAddr(ip)
    fmt.Println(ok)

    if ok == nil {
        h <- ip + " - " + addr[0]
    } else {
        fmt.Println(ok)
    }
}

func printer(n chan string) {
    msg := <-n
    fmt.Println(msg)
}

func main() {
    fmt.Println("Please enter your local IP-Adresse e.g 192.168.1.1")

    var ipAdresse_user string
    fmt.Scanln(&ipAdresse_user)

    ipsegment := strings.SplitAfter(ipAdresse_user, ".")
    ipadresse_3 := ipsegment[0] + ipsegment[1] + ipsegment[2]

    host := make(chan string)

    for i := 0; i < 55; i++ {

        go getHostName(host, ipadresse_3, i)
        go printer(host)
    }

    fmt.Println("Finish - Network Scan")
}
4

1 に答える 1

0

私の間違いは、たとえばScanlnでmain関数をブロックする必要があります。これがないと、プログラムはゴルーチンを実行する前に終了します。

于 2012-12-11T07:06:44.373 に答える