在Mac上运行ip4服务器

时间:2014-07-09 17:21:31

标签: go

我使用Jan Newmarch的{​​{3}}中的一些代码在我的Mac上运行日间服务器。它使用此代码

func main() {

        service := ":1200"
        tcpAddr, err := net.ResolveTCPAddr("ip4", service)
        checkError(err)

        listener, err := net.ListenTCP("tcp", tcpAddr)
        checkError(err)

然而,当我运行它(在Mac上)时,我收到此错误

Fatal error: unknown network ip4

我可以在此代码中包含除ip4以外的任何内容以避免该错误吗?

tcpAddr, err := net.ResolveTCPAddr("ip4", service)

注意,我也尝试了ip6并遇到了同样的错误。

3 个答案:

答案 0 :(得分:4)

根据ResolveTCPAddr的{​​{1}},net arg的唯一有效值是“tcp”,“tcp4”和“tcp6”

我怀疑你在ResolveTCPAddrResolveIPAddr

之间混淆了

答案 1 :(得分:1)

" IP4"不是ResolveTCPAddr (source)的有效网络。

使用ResolveIPAddr解析常规IP地址。

答案 2 :(得分:1)

" IP4"不是有效的字符串

请参阅ResolveTCPAddr

的文档
  

ResolveTCPAddr将addr解析为格式为#34; host:port"的TCP地址。要么   " [纯IPv6主机%区]:端口"并解析了一对域名和端口   网络名称,必须是" tcp"," tcp4"或" tcp6" 。一个   IPv6的文字地址或主机名必须用方括号括起来   括号,如" [:: 1]:80"," [ipv6-host]:http"要么   " [纯IPv6主机%区]:80"

代码:

func ResolveTCPAddr(net, addr string) (*TCPAddr, error) {
        switch net {
        case "tcp", "tcp4", "tcp6":
        case "": // a hint wildcard for Go 1.0 undocumented behavior
            net = "tcp"
        default:
            return nil, UnknownNetworkError(net)
        }
        a, err := resolveInternetAddr(net, addr, noDeadline)
        if err != nil {
            return nil, err
        }
        return a.toAddr().(*TCPAddr), nil
    }