我使用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
并遇到了同样的错误。
答案 0 :(得分:4)
根据ResolveTCPAddr
的{{1}},net
arg的唯一有效值是“tcp”,“tcp4”和“tcp6”
我怀疑你在ResolveTCPAddr
和ResolveIPAddr
答案 1 :(得分:1)
" IP4"不是ResolveTCPAddr (source)的有效网络。
使用ResolveIPAddr解析常规IP地址。
答案 2 :(得分:1)
" IP4"不是有效的字符串
的文档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
}