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

  1. proc EchoServ {port} {
  2. global echo
  3. set echo(main) [socket -server EchoAccept $port]
  4. }
  5. proc EchoAccept {sock addr port} {
  6. global echo
  7. puts "Accept $sock from $addr port $port"
  8. set echo(addr,$sock) [list $addr $port]
  9. fconfigure $sock -buffering line
  10. fileevent $sock readable [list Echo $sock]
  11. }
  12. proc Echo {sock} {
  13. global echo
  14. if {[eof $sock] || [catch {gets $sock line}]} {
  15. close $sock
  16. puts "Close $echo(addr,$sock)"
  17. unset echo(addr,$sock)
  18. } else {
  19. if {[string compare $line "quit"] == 0} { close $echo(main) }
  20. puts $line
  21. }
  22. }