mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-09 06:23:52 +08:00
fix: 修复GetFreePort获取端口已被占用
This commit is contained in:
@@ -354,21 +354,19 @@ func ConvertToStringSlice(val interface{}) ([]string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetFreePort() (int, error) {
|
func GetFreePort() (int, error) {
|
||||||
addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
|
minPort := 20000
|
||||||
if err != nil {
|
maxPort := 50000
|
||||||
return 0, errors.Wrap(err, "resolve tcp addr failed")
|
rand.Seed(time.Now().UnixNano())
|
||||||
}
|
for i := 0; i < 10; i++ {
|
||||||
|
port := rand.Intn(maxPort-minPort+1) + minPort
|
||||||
l, err := net.ListenTCP("tcp", addr)
|
addr := fmt.Sprintf("0.0.0.0:%d", port)
|
||||||
if err != nil {
|
l, err := net.Listen("tcp", addr)
|
||||||
return 0, errors.Wrap(err, "listen tcp addr failed")
|
if err == nil {
|
||||||
}
|
defer l.Close() // 端口成功绑定后立即释放,返回该端口号
|
||||||
defer func() {
|
return port, nil
|
||||||
if err = l.Close(); err != nil {
|
|
||||||
log.Error().Err(err).Msg(fmt.Sprintf("close addr %s error", l.Addr().String()))
|
|
||||||
}
|
}
|
||||||
}()
|
}
|
||||||
return l.Addr().(*net.TCPAddr).Port, nil
|
return 0, errors.New("failed to find available port in range")
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetCurrentDay() string {
|
func GetCurrentDay() string {
|
||||||
|
|||||||
Reference in New Issue
Block a user