在 net.DialTCP 中指定本地 IP 地址

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")


}

如果函数指定本地 IP 地址,它总是报告运行时错误“dial tcp 192.168.1.104:5000:提供了无效参数”。我很困惑,本地 IP 地址是否应该始终为零?


go 版本:1.1 Beta 操作系统:Win7 64 位


在 go 1.0.3 中尝试过,似乎还可以


慕姐8265434
浏览 526回答 2
2回答

aluckdog

Go 的net包,像大多数这样的实现一样,识别用于连接到 localhost 的仅端口语法::5000相当于<my-ip-address>:5000因此,您可以这样做:net.Dial("tcp",&nbsp;":5000")

RISEBY

不,可以laddr在 DialTCP 中指定参数。问题是指定的端口 (6000) 超出了默认的 Win7 动态端口范围,无法用于传出连接。它实际上适用于 Linux 和 Mac(如果您不忘记将 IP 地址更改为您自己的系统之一)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go