// DialIP connects to the remote address raddr on the network protocol netProto,
// which must be "ip", "ip4", or "ip6" followed by a colon and a protocol number or name.
DialIP connects to the remote address raddr on the network protocol netProto,
which must be "ip", "ip4", or "ip6" followed by a colon and a protocol number or name.
// DialIP connects to the remote address raddr on the network protocol netProto // which must be " ip " " ip4 " or " ip6 " followed by a colon and a protocol number or name .
func DialIP(netProto string, laddr, raddr *IPAddr) (*IPConn, error) {
	net, proto, err := parseDialNetwork(netProto)
	if err != nil {
		return nil, err
	}
	switch net {
	case "ip", "ip4", "ip6":
	default:
		return nil, UnknownNetworkError(net)
	}
	if raddr == nil {
		return nil, &OpError{"dial", netProto, nil, errMissingAddress}
	}
	fd, err := internetSocket(net, laddr.toAddr(), raddr.toAddr(), syscall.SOCK_RAW, proto, "dial", sockaddrToIP)
	if err != nil {
		return nil, err
	}
	return newIPConn(fd), nil
}
func DialIP ( netProto string , laddr , raddr * IPAddr ) ( * IPConn , error ) { net , proto , err := parseDialNetwork ( netProto ) if err != nil { return nil , err } switch net { case " " , " " , " " : default : return nil , UnknownNetworkError ( net ) } if raddr == nil { return nil , & OpError { " " , netProto , nil , errMissingAddress } } fd , err := internetSocket ( net , laddr . toAddr ( ) , raddr . toAddr ( ) , syscall . SOCK_RAW , proto , " " , sockaddrToIP ) if err != nil { return nil , err } return newIPConn ( fd ) , nil }
DialIP connects to the remote address raddr on the network protocol netProto,
which must be "ip", "ip4", or "ip6" followed by a colon and a protocol number or name.
DialIP connects to the remote address raddr on the network protocol netProto which must be " ip " " ip4 " or " ip6 " followed by a colon and a protocol number or name .