Skip to content
Snippets Groups Projects
Commit f9eeb8b8 authored by 邹毅贤's avatar 邹毅贤
Browse files

modify random port implement

parent 2810c635
No related branches found
No related tags found
No related merge requests found
...@@ -20,7 +20,7 @@ package config ...@@ -20,7 +20,7 @@ package config
import ( import (
"context" "context"
"fmt" "fmt"
"net" gxnet "github.com/dubbogo/gost/net"
"net/url" "net/url"
"strconv" "strconv"
"strings" "strings"
...@@ -106,43 +106,14 @@ func NewServiceConfig(id string, context context.Context) *ServiceConfig { ...@@ -106,43 +106,14 @@ func NewServiceConfig(id string, context context.Context) *ServiceConfig {
} }
} }
// Get Random Ports with no size // Get Random Port
func getRandomPort() int { func getRandomPort(ip string) string {
return getRandomPorts(1)[0] tcp, err := gxnet.ListenOnTCPRandomPort(ip)
} if err != nil {
panic(perrors.New(fmt.Sprintf("Get tcp port error,err is {%v}", err)))
// Get Random Ports with size
func getRandomPorts(size int) []int {
ports := make([]int, 0, size)
if size <= 0 {
return ports
}
var (
flag bool
addr *net.TCPAddr
)
i := 0
for i < size {
flag = false
addr = nil
go func() {
listener, err := net.Listen("tcp", ":0")
if err != nil {
return
}
flag = true
addr = listener.Addr().(*net.TCPAddr)
}()
time.Sleep(50 * time.Millisecond)
if !flag {
continue
}
ports = append(ports, addr.Port)
i++
} }
return ports defer tcp.Close()
return strings.Split(tcp.Addr().String(), ":")[1]
} }
// Export ... // Export ...
...@@ -179,7 +150,7 @@ func (c *ServiceConfig) Export() error { ...@@ -179,7 +150,7 @@ func (c *ServiceConfig) Export() error {
} }
port := proto.Port port := proto.Port
if len(proto.Port) == 0 { if len(proto.Port) == 0 {
port = strconv.Itoa(getRandomPort()) port = getRandomPort(proto.Ip)
} }
ivkURL := common.NewURLWithOptions( ivkURL := common.NewURLWithOptions(
common.WithPath(c.id), common.WithPath(c.id),
......
...@@ -14,7 +14,7 @@ require ( ...@@ -14,7 +14,7 @@ require (
github.com/creasty/defaults v1.3.0 github.com/creasty/defaults v1.3.0
github.com/dubbogo/getty v1.3.4 github.com/dubbogo/getty v1.3.4
github.com/dubbogo/go-zookeeper v1.0.0 github.com/dubbogo/go-zookeeper v1.0.0
github.com/dubbogo/gost v1.8.0 github.com/dubbogo/gost v1.9.0
github.com/emicklei/go-restful/v3 v3.0.0 github.com/emicklei/go-restful/v3 v3.0.0
github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 // indirect github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 // indirect
github.com/go-errors/errors v1.0.1 // indirect github.com/go-errors/errors v1.0.1 // indirect
......
...@@ -122,6 +122,8 @@ github.com/dubbogo/gost v1.7.0 h1:lWNBIE2hk1Aj2be2uXkyRTpZG0RQZj0/xbXnkIq6EHE= ...@@ -122,6 +122,8 @@ github.com/dubbogo/gost v1.7.0 h1:lWNBIE2hk1Aj2be2uXkyRTpZG0RQZj0/xbXnkIq6EHE=
github.com/dubbogo/gost v1.7.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= github.com/dubbogo/gost v1.7.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8=
github.com/dubbogo/gost v1.8.0 h1:9ACbQe5OwMjqtinQcNJC5xp16kky27OsfSGw5L9A6vw= github.com/dubbogo/gost v1.8.0 h1:9ACbQe5OwMjqtinQcNJC5xp16kky27OsfSGw5L9A6vw=
github.com/dubbogo/gost v1.8.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= github.com/dubbogo/gost v1.8.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8=
github.com/dubbogo/gost v1.9.0 h1:UT+dWwvLyJiDotxJERO75jB3Yxgsdy10KztR5ycxRAk=
github.com/dubbogo/gost v1.9.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8=
github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74 h1:2MIhn2R6oXQbgW5yHfS+d6YqyMfXiu2L55rFZC4UD/M= github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74 h1:2MIhn2R6oXQbgW5yHfS+d6YqyMfXiu2L55rFZC4UD/M=
github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74/go.mod h1:UqXY1lYT/ERa4OEAywUqdok1T4RCRdArkhic1Opuavo= github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74/go.mod h1:UqXY1lYT/ERa4OEAywUqdok1T4RCRdArkhic1Opuavo=
github.com/elazarl/go-bindata-assetfs v0.0.0-20160803192304-e1a2a7ec64b0 h1:ZoRgc53qJCfSLimXqJDrmBhnt5GChDsExMCK7t48o0Y= github.com/elazarl/go-bindata-assetfs v0.0.0-20160803192304-e1a2a7ec64b0 h1:ZoRgc53qJCfSLimXqJDrmBhnt5GChDsExMCK7t48o0Y=
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment