想作为一个client发起一个tcp连接,指定源地址和源端口, 同时连接带有timeout功能
我看了net库
有一个函数 func DialTimeout(network, address string, timeout time.Duration) (Conn, error)
可以实现带有timeout的tcp连接,但是它无法指定源端口,源地址
另一个函数 func DialTCP(net string, laddr, raddr TCPAddr) (TCPConn, error) 可以带有源地址,源端口,但是,却没有timeout功能
有什么办法能实现两者兼而有之? golang目前是初学者,隐约觉得可以通过为net.Dailer这个结构来指定timeout, 但是还是不会,希望有大侠能帮忙演示简单的示例代码?
谢谢了!
有疑问加站长微信联系(非本文作者)

net下面不是有一个DialTimeout吗?
如描述中所说,这个没法指定源地址,源port啊
正解
https://github.com/golang/go/blob/master/src/net/dial.go#L289
看下源码你就会发现,net包的Dial方法也是使用Dialer,DialTimeout只不过是设置了Dialer的timeout
@marlonche 通过这种应该是没问题的,可是事实上编译它仍然会报错。 我不知道为什么会这样? 能解释一下么?
我不得不采用另一种办法来实现,这种方法是采用嵌套的方式,却能成功
格式全乱了.....自己的跟贴还不允许修改,删除.....
给你格式化了。请看看 markdown 简明教程吧 https://studygolang.com/markdown。
另外,发布前可以预览下效果
@polaris 谢谢你啊
./5.go:16:2: d.Dail undefined
dial这个单词确实容易拼成dail@marlonche 我都汗颜以对了... 麻烦你了