mirror of
https://github.com/schollz/croc.git
synced 2024-11-28 09:35:14 +03:00
add util to find open ports
This commit is contained in:
parent
dab52b4af7
commit
78e4d5e179
@ -16,6 +16,7 @@ import (
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/cespare/xxhash"
|
||||
"github.com/kalafut/imohash"
|
||||
@ -242,3 +243,20 @@ func RandomFileName() (fname string, err error) {
|
||||
fname = f.Name()
|
||||
return
|
||||
}
|
||||
|
||||
func FindOpenPorts(host string, portNumStart, numPorts int) (openPorts []int) {
|
||||
openPorts = []int{}
|
||||
for port := portNumStart; port-portNumStart < 200; port++ {
|
||||
timeout := 100 * time.Millisecond
|
||||
conn, err := net.DialTimeout("tcp", net.JoinHostPort(host, fmt.Sprint(port)), timeout)
|
||||
if conn != nil {
|
||||
conn.Close()
|
||||
} else if err != nil {
|
||||
openPorts = append(openPorts, port)
|
||||
}
|
||||
if len(openPorts) >= numPorts {
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -186,3 +186,8 @@ func TestGetRandomName(t *testing.T) {
|
||||
name := GetRandomName()
|
||||
assert.NotEmpty(t, name)
|
||||
}
|
||||
|
||||
func TestFindOpenPorts(t *testing.T) {
|
||||
openPorts := FindOpenPorts("localhost", 9009, 4)
|
||||
assert.Equal(t, []int{9009, 9010, 9011, 9012}, openPorts)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user