获取一个空闲可用的端口号
func GetFreePort() (int, error) {
addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
if err != nil {
return 0, err
}
l, err := net.ListenTCP("tcp", addr)
if err != nil {
return 0, err
}
defer l.Close()
return l.Addr().(*net.TCPAddr).Port, nil
}
//单元测试
func TestGetFreePorts(t *testing.T) {
port, err := GetFreePort()
if err != nil {
log.Println(err)
}
log.Println(port)
}
//输出:
=== RUN TestGetFreePorts
2019/08/09 14:31:46 36994
--- PASS: TestGetFreePorts (0.02s)
PASS
获取多个空闲可用端口
func GetFreePorts(count int) ([]int, error) {
var ports []int
for i := 0; i < count; i++ {
addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
if err != nil {
return nil, err
}
l, err := net.ListenTCP("tcp", addr)
if err != nil {
return nil, err
}
defer l.Close()
ports = append(ports, l.Addr().(*net.TCPAddr).Port)
}
return ports, nil
}
//单元测试
func TestGetFreePorts(t *testing.T) {
port, err := GetFreePorts(3)
if err != nil {
log.Println(err)
}
log.Println(port)
}
//输出
=== RUN TestGetFreePorts
2019/08/09 14:33:20 [37041 37042 37043]
--- PASS: TestGetFreePorts (0.02s)
PASS
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2021/03/28 01:29