Posted to tcl by gps at Thu Mar 12 08:12:54 GMT 2009view raw

  1.  
  2. set ::write_enabled 0
  3.  
  4. proc write sock {
  5. puts WRITE:$sock
  6.  
  7. puts $sock [string repeat "LONG DATA" 2000]
  8. flush $sock
  9. }
  10.  
  11. proc get sock {
  12. if {!$::write_enabled} {
  13. fileevent $sock writable [list write $sock]
  14. set ::write_enabled 1
  15. #disable this until the write is done...
  16. fileevent $sock readable {}
  17. }
  18. }
  19.  
  20. proc accept {sock args} {
  21. fconfigure $sock -blocking 0
  22. fileevent $sock readable [list get $sock]
  23. }
  24.  
  25. socket -server accept 8888
  26.  
  27. vwait forever