我正在尝试在Go中编写端口扫描程序,因为我是新手,因此我遇到的问题很少。下面是我写的代码。
package main
import (
"fmt"
"log"
"net"
"os"
)
func main() {
callme()
}
func callme() {
var status string
getip := os.Args[1]
getport := 0
for i := 0; i < 10; i++ {
getport += i
data := getip + ":" + getport
conn, err := net.Dial("tcp", data)
if err != nil {
log.Println("Connection error:", err)
status = "Unreachable"
} else {
status = getport + " - " + "Open"
defer conn.Close()
}
fmt.Println(status)
}
}
我从用户那里取ip作为命令行arg,然后想要扫描这个ip上的所有端口。由于net.Dial函数需要像“ip:port”这样的格式的数据,所以我很困惑如何每次连接字符串和int。 any1能帮助我实现这个目标吗?
答案 0 :(得分:4)
一种可能性是使用strconv.Itoa(getport)
将int
转换为string
。另一种可能性是格式化字符串,如fmt.Sprintf("%s:%d", getip, getport)
或fmt.Sprintf("%d - Open", getport)
。