@@ -15,8 +15,6 @@ import (
1515
1616var icmp ICMP
1717
18- var wg sync.WaitGroup
19-
2018type ICMP struct {
2119 Type uint8
2220 Code uint8
@@ -34,20 +32,20 @@ func main() {
3432 fmt .Printf ("使用方法:%s [-v] <网络号>/<CIDR>\n " , os .Args [0 ])
3533 os .Exit (- 1 )
3634 }
37- CheckIP (os . Args [ 1 ], isVerbose )
35+ CheckIP (args [ 0 ], isVerbose )
3836}
3937
4038func CheckIP (subnet string , isVerbose bool ) {
4139 var usedIP []string
4240 var unusedIP []string
41+ checkerGroup := & sync.WaitGroup {}
4342 t := time .Now ()
4443 hosts , _ := getAllHostsFromCIDR (subnet )
4544 for _ , ip := range hosts {
46- tmp := ip
4745 time .Sleep (500 )
48- wg .Add (1 )
46+ checkerGroup .Add (1 )
4947 go func (data string ) {
50- defer wg .Done ()
48+ defer checkerGroup .Done ()
5149 isUsed := ping (data )
5250 if isUsed {
5351 usedIP = append (usedIP , data )
@@ -60,9 +58,9 @@ func CheckIP(subnet string, isVerbose bool) {
6058 fmt .Println ("未使用IP:" , unusedIP )
6159 }
6260 }
63- }(tmp )
61+ }(ip )
6462 }
65- wg .Wait ()
63+ checkerGroup .Wait ()
6664 elapsed := time .Since (t )
6765 fmt .Println ("IP扫描完成,耗时" , elapsed )
6866 fmt .Println ("已使用IP:" , sortIPList (usedIP ))
@@ -140,11 +138,7 @@ func ping(ip string) bool {
140138
141139 conn .SetReadDeadline (time.Time {})
142140
143- if string (recvBuf [0 :num ]) != "" {
144- return true
145- }
146- return false
147-
141+ return string (recvBuf [0 :num ]) != ""
148142}
149143
150144func CheckSum (data []byte ) uint16 {
0 commit comments