Posted to tcl by ci_omegadog at Sat Jun 30 18:21:38 GMT 2007view pretty

proc EchoServ {port} {
    global echo
    set echo(main) [socket -server EchoAccept $port]
}
proc EchoAccept {sock addr port} {
    global echo
    puts "Accept $sock from $addr port $port"
    set echo(addr,$sock) [list $addr $port]
    fconfigure $sock -buffering line 
    fileevent $sock readable [list Echo $sock]
} 
proc Echo {sock} {
    global echo
   if {[eof $sock] || [catch {gets $sock line}]} {
        close $sock
        puts "Close $echo(addr,$sock)"
        unset echo(addr,$sock)
    } else {
        if {[string compare $line "quit"] == 0} { close $echo(main) }
        puts $line
    }
}