Documentation ¶
Index ¶
- Constants
- Variables
- func AssertHost(host string) error
- func AssertHostname(hostname string) error
- func AssertValidPort(port int) error
- func CanDial(addr string, timeout time.Duration) error
- func IsHost(str string) bool
- func IsHostname(str string) bool
- func IsPort(obj interface{}) bool
- func JoinToHost(hostname string, port int) string
- func PolyfillHosts(hosts []string, minCount int) ([]string, error)
Constants ¶
View Source
const ( DefaultHttpPort = 80 DefaultHttpsPort = 443 // MaxPort 65535 == 0xFFFF MaxPort = 0xFFFF )
Variables ¶
View Source
var ( // Listen 监听指定的网络地址. /* 可能在以下几种情况下返回error: (1) 传参 network 不是有效值; (2) 传参 address 格式不正确; (3) 你试图监听的端口已经被其他进程占用; e.g. listen tcp 127.0.0.1:12345: bind: address already in use (4) 系统资源(如文件描述符)不足; (5) 如果你试图监听的端口号小于1024,而运行程序的用户没有足够的权限(通常需要 root 权限),函数将返回错误; (6) 如果网络出现问题(例如,网络接口不可用),函数将返回错误. @param network 网络类型,如: tcp、tcp4、tcp6、unix、unixpacket... @param address 监听的地址,格式为 ip:port,如果不指定 port,将由系统自动分配一个端口 */ Listen func(network, address string) (net.Listener, error) = net.Listen // ResolveTCPAddr 将一个地址解析成TCP地址形式. /* @param network 网络类型, (1) 必须是: "tcp" || "tcp4" || "tcp6" (2) 如果是"",则默认为"tcp" @param address 地址 */ ResolveTCPAddr func(network, address string) (*net.TCPAddr, error) = net.ResolveTCPAddr )
View Source
var ( // Dial Deprecated: Use DialTimeout instead. /* 不推荐使用的原因: net.Dial如果连接的是未开放的端口,一个端口可能就是20s+. */ Dial func(network, address string) (net.Conn, error) = net.Dial // DialTimeout 建立一个到TCP服务器的连接. /* PS: (1) 可设置超时时间(如果超过 timeout 的指定的时间,连接没有完成,会返回超时错误); (2) 如果你需要更多的控制并且需要超时,你可以组合使用 net.Dialer结构体、Dialer.Dial、Dialer.DialContext. e.g. net.DialTimeout("tcp", "example.com:80", 5*time.Second) */ DialTimeout func(network, address string, timeout time.Duration) (net.Conn, error) = net.DialTimeout // DialTCP 建立一个到TCP服务器的连接. /* @param network 网络类型,可以是"tcp"、“tcp4”(仅IPv4)、“tcp6”(仅IPv6) @param laddr 本地的TCP地址(通常设为nil,系统会自动选择一个本地地址和端口来建立连接) @param raddr 远程的TCP地址 PS: (1) 相较于 net.DialTimeout ,此函数 提供了更多的控制,但不直接支持超时; (2) 如果你需要更多的控制并且需要超时,你可以组合使用 net.Dialer结构体、Dialer.Dial、Dialer.DialContext. */ DialTCP func(network string, laddr, raddr *net.TCPAddr) (*net.TCPConn, error) = net.DialTCP )
View Source
var ( // IsPingConnected 检查能否ping通主机. /* e.g. result1 := netutil.IsPingConnected("www.baidu.com") result2 := netutil.IsPingConnected("www.!@#&&&.com") fmt.Println(result1) // true fmt.Println(result2) // false */ IsPingConnected func(hostname string) bool = netutil.IsPingConnected )
View Source
var ( // IsTelnetConnected 检查能否telnet到主机. /* PS: 超时时间为5s. e.g. result1 := netutil.IsTelnetConnected("www.baidu.com", "80") result2 := netutil.IsTelnetConnected("www.baidu.com", "123") fmt.Println(result1) // true fmt.Println(result2) // false */ IsTelnetConnected func(hostname string, port string) bool = netutil.IsTelnetConnected )
View Source
var ( // SplitHost /* e.g. fmt.Println(SplitHost("localhost:8080")) // "localhost" "8080" <nil> fmt.Println(SplitHost("127.0.0.1")) // "" "" address 127.0.0.1: missing port in address fmt.Println(SplitHost("localhost")) // "" "" address localhost: missing port in address */ SplitHost func(host string) (hostname, port string, err error) = net.SplitHostPort )
Functions ¶
func AssertHost ¶ added in v3.0.100
func AssertHostname ¶ added in v3.0.100
func AssertValidPort ¶
func IsHostname ¶ added in v3.0.99
func IsPort ¶ added in v3.0.100
func IsPort(obj interface{}) bool
IsPort 是否是有效的端口号?(0, 65535]
参考: (1) Java,hutool中的NetUtil.isValidPort() (2) Linux端口分配: https://blog.csdn.net/zh2508/article/details/104888743
0 不使用 1–1023 系统保留,只能由root用户使用 1024—4999 由客户端程序自由分配 5000—65535 由服务器端程序自由分配(65535 = 2 ^ 16 - 1)
@param obj (1) 支持的类型: reflect.Value、int、uint、string...
(2) 可以为nil
func JoinToHost ¶ added in v3.0.87
JoinToHost
e.g.
fmt.Println(netKit.JoinToHost("127.0.0.1", 80)) // 127.0.0.1:80 fmt.Println(netKit.JoinToHost("", 8888)) // :8888
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.