@@ -74,29 +74,35 @@ func (h *HostScanner) Run(s SDK.ISandbox, sig chan struct{}) (err error) {
7474 if len (availableAddrs ) > 512 {
7575 rand .Shuffle (len (availableAddrs ), func (i , j int ) { availableAddrs [i ], availableAddrs [j ] = availableAddrs [j ], availableAddrs [i ] })
7676 }
77+ scan:
7778 for _ , addr := range availableAddrs {
78- pinger , err := ping .NewPinger (addr )
79- if err != nil {
80- continue
81- }
82- pinger .Count = 2
83- pinger .Timeout = time .Duration (3 * time .Second )
84- pinger .SetPrivileged (false )
85- pinger .Run ()
86- if pinger .Statistics ().PacketsRecv > 0 {
87- rec := & protocol.Record {
88- DataType : int32 (h .DataType ()),
89- Timestamp : time .Now ().Unix (),
90- Data : & protocol.Payload {
91- Fields : map [string ]string {
92- "addr" : addr ,
93- "package_seq" : hash ,
79+ select {
80+ case <- sig :
81+ break scan
82+ default :
83+ pinger , err := ping .NewPinger (addr )
84+ if err != nil {
85+ continue
86+ }
87+ pinger .Count = 2
88+ pinger .Timeout = time .Duration (3 * time .Second )
89+ pinger .SetPrivileged (false )
90+ pinger .Run ()
91+ if pinger .Statistics ().PacketsRecv > 0 {
92+ rec := & protocol.Record {
93+ DataType : int32 (h .DataType ()),
94+ Timestamp : time .Now ().Unix (),
95+ Data : & protocol.Payload {
96+ Fields : map [string ]string {
97+ "addr" : addr ,
98+ "package_seq" : hash ,
99+ },
94100 },
95- },
101+ }
102+ s .SendRecord (rec )
96103 }
97- s . SendRecord ( rec )
104+ time . Sleep ( 400 * time . Millisecond )
98105 }
99- time .Sleep (400 * time .Millisecond )
100106 }
101107 }
102108 return
0 commit comments