GO语言"net"包中"Dialer"类型的用法及代码示例。
拨号器包含连接到地址的选项。
每个字段的零值相当于没有该选项的拨号。因此,使用 Dialer 的零值拨号等同于调用 Dial 函数。
同时调用 Dialer 的方法是安全的。
用法:
type Dialer struct {
// Timeout is the maximum amount of time a dial will wait for
// a connect to complete.If Deadline is also set, it may fail
// earlier.
//
// The default is no timeout.
//
// When using TCP and dialing a host name with multiple IP
// addresses, the timeout may be divided between them.
//
// With or without a timeout, the operating system may impose
// its own earlier timeout.For instance, TCP timeouts are
// often around 3 minutes.
Timeout time.Duration
// Deadline is the absolute point in time after which dials
// will fail.If Timeout is set, it may fail earlier.
// Zero means no deadline, or dependent on the operating system
// as with the Timeout option.
Deadline time.Time
// LocalAddr is the local address to use when dialing an
// address.The address must be of a compatible type for the
// network being dialed.
// If nil, a local address is automatically chosen.
LocalAddr Addr
// DualStack previously enabled RFC 6555 Fast Fallback
// support, also known as "Happy Eyeballs", in which IPv4 is
// tried soon if IPv6 appears to be misconfigured and
// hanging.
//
// Deprecated: Fast Fallback is enabled by default.To
// disable, set FallbackDelay to a negative value.
DualStack bool // Go 1.2
// FallbackDelay specifies the length of time to wait before
// spawning a RFC 6555 Fast Fallback connection.That is, this
// is the amount of time to wait for IPv6 to succeed before
// assuming that IPv6 is misconfigured and falling back to
// IPv4.
//
// If zero, a default delay of 300ms is used.
// A negative value disables Fast Fallback support.
FallbackDelay time.Duration // Go 1.5
// KeepAlive specifies the interval between keep-alive
// probes for an active network connection.
// If zero, keep-alive probes are sent with a default value
//(currently 15 seconds), if supported by the protocol and operating
// system.Network protocols or operating systems that do
// not support keep-alives ignore this field.
// If negative, keep-alive probes are disabled.
KeepAlive time.Duration // Go 1.3
// Resolver optionally specifies an alternate resolver to use.
Resolver *Resolver // Go 1.8
// Cancel is an optional channel whose closure indicates that
// the dial should be canceled.Not all types of dials support
// cancellation.
//
// Deprecated: Use DialContext instead.
Cancel <-chan struct{} // Go 1.6
// If Control is not nil, it is called after creating the network
// connection but before actually dialing.
//
// Network and address parameters passed to Control method are not
// necessarily the ones passed to Dial.For example, passing "tcp" to Dial
// will cause the Control function to be called with "tcp4" or "tcp6".
Control func(network, address string, c syscall.RawConn) error // Go 1.11
}
例子:
package main
import (
"context"
"log"
"net"
"time"
)
func main() {
var d net.Dialer
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
conn, err := d.DialContext(ctx, "tcp", "localhost:12345")
if err != nil {
log.Fatalf("Failed to dial: %v", err)
}
defer conn.Close()
if _, err := conn.Write([]byte("Hello, World!")); err != nil {
log.Fatal(err)
}
}
示例(Unix):
package main
import (
"context"
"log"
"net"
"time"
)
func main() {
// DialUnix does not take a context.Context parameter. This example shows
// how to dial a Unix socket with a Context. Note that the Context only
// applies to the dial operation; it does not apply to the connection once
// it has been established.
var d net.Dialer
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
d.LocalAddr = nil // if you have a local addr, add it here
raddr := net.UnixAddr{Name: "/path/to/unix.sock", Net: "unix"}
conn, err := d.DialContext(ctx, "unix", raddr.String())
if err != nil {
log.Fatalf("Failed to dial: %v", err)
}
defer conn.Close()
if _, err := conn.Write([]byte("Hello, socket!")); err != nil {
log.Fatal(err)
}
}
相关用法
- GO Dial用法及代码示例
- GO Div64用法及代码示例
- GO Div32用法及代码示例
- GO Dim用法及代码示例
- GO Dir用法及代码示例
- GO DecodeLastRuneInString用法及代码示例
- GO DumpResponse用法及代码示例
- GO DB.QueryRowContext用法及代码示例
- GO Date用法及代码示例
- GO DB.ExecContext用法及代码示例
- GO DB.BeginTx用法及代码示例
- GO Decoder.Token用法及代码示例
- GO Decoder.Decode用法及代码示例
- GO DumpRequest用法及代码示例
- GO Drawer用法及代码示例
- GO Duration.Hours用法及代码示例
- GO Duration.Round用法及代码示例
- GO DecodeRuneInString用法及代码示例
- GO DumpRequestOut用法及代码示例
- GO DecodeRune用法及代码示例
注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 Dialer。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。