fix timesync; concurrent scan
This commit is contained in:
parent
3f82212d27
commit
3f0014bb2c
@ -86,21 +86,35 @@ func main() {
|
|||||||
}
|
}
|
||||||
defer outconn.Close()
|
defer outconn.Close()
|
||||||
recvBuf := make([]byte, 1024)
|
recvBuf := make([]byte, 1024)
|
||||||
_, err2 := outconn.Write([]byte("showtime"))
|
msg := []byte("showtime\n")
|
||||||
|
n, err2 := outconn.Write(msg)
|
||||||
|
if n != len(msg) {
|
||||||
|
fmt.Println("didn't send all the bytes")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
if err2 != nil {
|
if err2 != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
_, err3 := outconn.Read(recvBuf)
|
// Temporary fix, fixme pls
|
||||||
|
var read int
|
||||||
|
for {
|
||||||
|
var err3 error
|
||||||
|
read, err3 = outconn.Read(recvBuf)
|
||||||
|
if read > 2 {
|
||||||
|
break
|
||||||
|
}
|
||||||
if err3 != nil {
|
if err3 != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
_, err4 := conn.Write(recvBuf)
|
_, err4 := conn.Write(recvBuf)
|
||||||
if err4 != nil {
|
if err4 != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
outconn.Close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if resp == "quit" {
|
if resp == "quit" {
|
||||||
|
@ -3,37 +3,52 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func scan() []string {
|
func scan() []string {
|
||||||
var information []string
|
var information []string
|
||||||
|
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
ips := make(chan string, 256)
|
||||||
|
|
||||||
ifaces, _ := net.Interfaces()
|
ifaces, _ := net.Interfaces()
|
||||||
for _, i := range ifaces {
|
for _, iface := range ifaces {
|
||||||
addrs, _ := i.Addrs()
|
addrs, _ := iface.Addrs()
|
||||||
for _, j := range addrs {
|
for _, addr := range addrs {
|
||||||
ipv4, _, _ := net.ParseCIDR(j.String())
|
ipv4, _, _ := net.ParseCIDR(addr.String())
|
||||||
|
|
||||||
if ipv4.IsGlobalUnicast() && ipv4.To4() != nil {
|
if ipv4.IsGlobalUnicast() && ipv4.To4() != nil {
|
||||||
ipv4 = ipv4.To4()
|
ipv4 = ipv4.To4()
|
||||||
ipv4 = ipv4.Mask(ipv4.DefaultMask())
|
ipv4 = ipv4.Mask(ipv4.DefaultMask())
|
||||||
ipv4[3]++
|
|
||||||
for i := 1; i < 2; i++ {
|
|
||||||
_, dialErr := net.DialTimeout("tcp", ipv4.String()+":8081", time.Duration(1)*time.Second)
|
|
||||||
// _, dialErr := net.DialTimeout("tcp", "192.168.0.100:8081", time.Duration(1)*time.Second)
|
|
||||||
if dialErr != nil {
|
|
||||||
fmt.Println("Cannot connect to " + ipv4.String())
|
|
||||||
// fmt.Println("Cannot connect to " + "192.168.0.100:8081")
|
|
||||||
} else {
|
|
||||||
fmt.Println("Response from " + ipv4.String())
|
|
||||||
// fmt.Println("Response from " + "192.168.0.100:8081")
|
|
||||||
information = append(information, ipv4.String())
|
|
||||||
// information = append(information, "192.168.0.100:8081")
|
|
||||||
}
|
|
||||||
ipv4[3]++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return information
|
|
||||||
|
|
||||||
|
for i := 1; i < 255; i++ {
|
||||||
|
localIP := make([]byte, 4)
|
||||||
|
copy(localIP, ipv4)
|
||||||
|
wg.Add(1)
|
||||||
|
go func(ip net.IP) {
|
||||||
|
_, dialErr := net.DialTimeout("tcp", ip.String()+":8081", time.Duration(1)*time.Second)
|
||||||
|
if dialErr == nil {
|
||||||
|
ips <- ip.String() + ":8081"
|
||||||
|
}
|
||||||
|
wg.Done()
|
||||||
|
}(localIP)
|
||||||
|
ipv4[3]++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
wg.Wait()
|
||||||
|
close(ips)
|
||||||
|
}()
|
||||||
|
|
||||||
|
for ip := range ips {
|
||||||
|
fmt.Println("Response from " + ip)
|
||||||
|
information = append(information, ip)
|
||||||
|
}
|
||||||
|
|
||||||
|
return information
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user