|
|
@ -5,10 +5,22 @@ import ( |
|
|
|
"strings" |
|
|
|
) |
|
|
|
|
|
|
|
// protoAddr: e.g. "tcp://127.0.0.1:8080" or "unix:///tmp/test.sock"
|
|
|
|
// Connect dials the given address and returns a net.Conn. The protoAddr argument should be prefixed with the protocol,
|
|
|
|
// eg. "tcp://127.0.0.1:8080" or "unix:///tmp/test.sock"
|
|
|
|
func Connect(protoAddr string) (net.Conn, error) { |
|
|
|
parts := strings.SplitN(protoAddr, "://", 2) |
|
|
|
proto, address := parts[0], parts[1] |
|
|
|
proto, address := ProtocolAndAddress(protoAddr) |
|
|
|
conn, err := net.Dial(proto, address) |
|
|
|
return conn, err |
|
|
|
} |
|
|
|
|
|
|
|
// ProtocolAndAddress splits an address into the protocol and address components.
|
|
|
|
// For instance, "tcp://127.0.0.1:8080" will be split into "tcp" and "127.0.0.1:8080".
|
|
|
|
// If the address has no protocol prefix, the default is "tcp".
|
|
|
|
func ProtocolAndAddress(listenAddr string) (string, string) { |
|
|
|
protocol, address := "tcp", listenAddr |
|
|
|
parts := strings.SplitN(address, "://", 2) |
|
|
|
if len(parts) == 2 { |
|
|
|
protocol, address = parts[0], parts[1] |
|
|
|
} |
|
|
|
return protocol, address |
|
|
|
} |