2016-11-16 98 views
-5

我想在Go中编写一个端口扫描器,由于我对此很陌生,因此我面临的问题很少。以下是我到目前为止编写的代码。字符串和整数串联问题golang

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。任何1可以帮助我实现这一目标吗?

+1

如果您在将整数转换为字符串时遇到问题,请查看Go的包https://golang.org/pkg/strconv/特别是Itoa方法 – reticentroot

+0

我试图将int转换为字符串,然后数字更改它们值给一些特殊的字符它的奇怪 – StackB00m

+0

这听起来像和编码问题。 – reticentroot

回答

1

一种可能性是使用strconv.Itoa(getport)int转换为string。另一种可能性是格式化字符串,如fmt.Sprintf("%s:%d", getip, getport)fmt.Sprintf("%d - Open", getport)

+0

你可以试试这些并完成上面的代码,这样当给出一个ip时,它会检查每个端口并递归地给出响应,请感谢 – StackB00m