9
func resolveNetAddr(op, net, addr string) (a Addr, err os.Error) {
11
return nil, &OpError{op, net, nil, errMissingAddress}
14
case "tcp", "tcp4", "tcp6":
15
a, err = ResolveTCPAddr(net, addr)
16
case "udp", "udp4", "udp6":
17
a, err = ResolveUDPAddr(net, addr)
18
case "unix", "unixgram", "unixpacket":
19
a, err = ResolveUnixAddr(net, addr)
20
case "ip", "ip4", "ip6":
21
a, err = ResolveIPAddr(net, addr)
23
err = UnknownNetworkError(net)
26
return nil, &OpError{op, net + " " + addr, nil, err}
9
31
// Dial connects to the address addr on the network net.
11
33
// Known networks are "tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only),
23
45
// Dial("tcp", "[de:ad:be:ef::ca:fe]:80")
25
47
func Dial(net, addr string) (c Conn, err os.Error) {
28
return nil, &OpError{"dial", net, nil, errMissingAddress}
48
addri, err := resolveNetAddr("dial", net, addr)
31
case "tcp", "tcp4", "tcp6":
33
if ra, err = ResolveTCPAddr(net, raddr); err != nil {
36
c, err := DialTCP(net, nil, ra)
41
case "udp", "udp4", "udp6":
43
if ra, err = ResolveUDPAddr(net, raddr); err != nil {
46
c, err := DialUDP(net, nil, ra)
51
case "unix", "unixgram", "unixpacket":
53
if ra, err = ResolveUnixAddr(net, raddr); err != nil {
52
switch ra := addri.(type) {
54
c, err = DialTCP(net, nil, ra)
56
c, err = DialUDP(net, nil, ra)
56
58
c, err = DialUnix(net, nil, ra)
61
case "ip", "ip4", "ip6":
63
if ra, err = ResolveIPAddr(net, raddr); err != nil {
66
c, err := DialIP(net, nil, ra)
73
err = UnknownNetworkError(net)
75
return nil, &OpError{"dial", net + " " + raddr, nil, err}
60
c, err = DialIP(net, nil, ra)
62
err = UnknownNetworkError(net)
65
return nil, &OpError{"dial", net + " " + addr, nil, err}
78
70
// Listen announces on the local network address laddr.