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

modify random port implement

parent 9cd7ec1a
No related branches found
No related tags found
No related merge requests found
......@@ -20,7 +20,7 @@ package config
import (
"context"
"fmt"
"net"
gxnet "github.com/dubbogo/gost/net"
"net/url"
"strconv"
"strings"
......@@ -106,43 +106,14 @@ func NewServiceConfig(id string, context context.Context) *ServiceConfig {
}
}
// Get Random Ports with no size
func getRandomPort() int {
return getRandomPorts(1)[0]
}
// 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++
// Get Random Port
func getRandomPort(ip string) string {
tcp, err := gxnet.ListenOnTCPRandomPort(ip)
if err != nil {
panic(perrors.New(fmt.Sprintf("Get tcp port error,err is {%v}", err)))
}
return ports
defer tcp.Close()
return strings.Split(tcp.Addr().String(), ":")[1]
}
// Export ...
......@@ -179,7 +150,7 @@ func (c *ServiceConfig) Export() error {
}
port := proto.Port
if len(proto.Port) == 0 {
port = strconv.Itoa(getRandomPort())
port = getRandomPort(proto.Ip)
}
ivkURL := common.NewURLWithOptions(
common.WithPath(c.id),
......
......@@ -14,7 +14,7 @@ require (
github.com/creasty/defaults v1.3.0
github.com/dubbogo/getty v1.3.4
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/fastly/go-utils v0.0.0-20180712184237-d95a45783239 // indirect
github.com/go-errors/errors v1.0.1 // indirect
......
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