Posted to tcl by kostix at Wed Dec 06 14:14:46 GMT 2006view pretty
#! /usr/bin/wish set host aquinas.domain007.com set port 6666 set timeout 2000 ;# msec variable socket proc connect {host port timeout} { set sock [socket -async $host $port] fileevent $sock writable [list connected $host $port $sock] after $timeout timed_out $sock } proc connected {host port sock} { after cancel timed_out $sock fileevent $sock writable {} set failed [catch {fconfigure $sock -peername} msg] if {$failed} { tk_messageBox -message "Failed to connect:\ [fconfigure $sock -error]" } else { global socket set socket $sock tk_messageBox -message "Connected: [fconfigure $sock]" } .connect config -state normal } proc timed_out {sock} { shutdown $sock .connect config -state normal tk_messageBox -message "Connection timed out" } proc shutdown {sock} { catch { close $sock } } proc do_connect {} { global host port timeout .connect config -state disabled connect $host $port $timeout } proc do_disc {} { global socket shutdown $socket } foreach t {host port timeout} { pack [entry .$t -textvariable ::$t] } pack [button .connect -text "Connect" -command do_connect] pack [button .disc -text "Disconnect" -command do_disc]