proc scan_ip {start_ip end_ip} { global globals set curr_ip 192.168.0.$start_ip set end_ip_section 192.168.0.$end_ip while {$curr_ip != $end_ip_section} { #open the whole bunch of sockets (normaly 255) if {![catch {set sock [socket -async $curr_ip $globals(client_server_port)]}]} { fconfigure $sock -blocking 0 -buffering line append ip_list "$sock $curr_ip " puts "testing:$curr_ip" } incr start_ip set curr_ip 192.168.0.$start_ip } after 100 #check the successfully opened sockets if there is an server behind foreach {sock curr_ip} $ip_list { set test "" catch {set test [gets $sock] } if {$test == "SERVER_OK" } { set ret_ip $curr_ip puts "SUCCESS: Found server at: $curr_ip" break } } #close sockets again foreach {sock curr_ip} $ip_list { close $sock } } proc Configure_Server_Client {sock addr port} { global globals # Record the client's information fconfigure $sock -blocking 0 -buffering line # Set up a event if data is present at admin socket if {[catch {puts $sock "SERVER_OK"}]} { puts "remote gui socket not available anymore closing sock: $sock" close $sock return } ##for this check all is done I close the socket again close $sock puts "successfully etablished connection to client" exit } ###MAIN######## if {$argc != 1} { puts "usage:[file tail $argv0] " exit } set globals(client_server_port) 9901 switch $argv { server { puts "opening server socket at port $globals(client_server_port)" socket -server Configure_Server_Client $globals(client_server_port) vwait forever } client { scan_ip 2 255 } ---- !!!!!! %| Category Example |% !!!!!!