# Initialise the state
after 5000 set state timeout
set server [socket -server Server 10444]
proc Server {chan addr port} {
global state connectionInfo
set state accepted
set connectionInfo $chan
fileevent $chan readable [list foo $chan]
fileevent $chan writeable [list foo $chan]
}
proc foo {chan} {
puts $foo "foo [channels]"
puts $chan "chan [channels]"
set type [gets $chan]
if{$type="chans"} {
puts $chan "[channels]"
} else {
puts $chan "Invalid Type"
}
}
# Wait for something to happen
vwait state
# Clean up events that could have happened
#close $server
after cancel set state timeout
# Do something based on how the vwait finished...
switch $state {
timeout {
putlog "no connection on port 12345"
}
accepted {
putlog "connection: $connectionInfo"
puts [lindex $connectionInfo 0] "Hello there!"
}
}