5
package main

import (
    "fmt"
    "net"
)

func main() {

    var localaddr net.TCPAddr
    var remoteaddr net.TCPAddr
    localaddr.IP = net.ParseIP("192.168.1.104")
    localaddr.Port = 6000
    remoteaddr.IP = net.ParseIP("192.168.1.104")
    remoteaddr.Port = 5000

    if localaddr.IP == nil || remoteaddr.IP == nil {
        fmt.Println("error")
    }

    if _, err := net.DialTCP("tcp", &localaddr, &remoteaddr); err != nil {
        fmt.Println(err)
    }

    fmt.Println("End")

}

If the function specify local IP address, it always reports a run time error "dial tcp 192.168.1.104:5000: An invalid argument was supplied." I'm confused, should it always be a nil for local IP address ?

go version : 1.1 Beta OS: Win7 64bit

Tried in go 1.0.3, it seemed OK

4

2 回答 2

0

Go 的net包,像大多数这样的实现一样,识别连接到 localhost 的仅端口语法:

:5000

相当于

<my-ip-address>:5000

因此,您可以这样做:

net.Dial("tcp", ":5000")
于 2013-07-09T17:29:48.740 回答
0

不,可以laddr在 DialTCP 中指定参数。问题是指定的端口(6000)超出了默认的 Win7 动态端口范围,不能用于传出连接。实际上,它适用于 Linux 和 Mac(如果您没有忘记将 IP 地址更改为您自己的系统之一)。

于 2018-05-08T11:26:14.077 回答