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

时间:2013-04-07 09:08:17

标签: go

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 version:1.1 Beta 操作系统:Win7 64位

试着去1.0.3,似乎没问题

2 个答案:

答案 0 :(得分:0)

Go net包与大多数此类实现一样,识别用于连接localhost的仅端口语法:

:5000

相当于

<my-ip-address>:5000

因此,您可以这样做:

net.Dial("tcp", ":5000")

答案 1 :(得分:0)

不,可以在DialTCP中指定laddr参数。问题是指定的端口(6000)在default Win7 dynamic port range之外,不能用于传出连接。它实际上适用于Linux和Mac(如果您不忘记将IP地址更改为您自己的系统之一)。