From a request by GPS on Tclers' chat, came this simple server as a socket demo. Data from each client is simply relayed to the other, like on a telephone bridge. Extending to more than 2 parties is left as an excercise. array set socks {} proc makebridge {p0 p1} { set l0 [socket -server [list connect 0] $p0] set l1 [socket -server [list connect 1] $p1] } proc connect {p sock addr port} { puts "Client on port $p: $sock from $addr:$port" global socks set socks($p) $sock fconfigure $sock -buffering none fconfigure $sock -blocking no fileevent $sock readable [list bridge $p] } proc bridge {p} { set q [expr {!$p}] global socks puts "woo! $p -> $q" if {[eof $socks($p)] || [catch {set data [read $socks($p)]}]} { puts "Close port $p: $::errorInfo" close $socks($p) close $socks($q) array set socks {} } else { puts "Data on $p: $data" puts -nonewline $socks($q) $data } } makebridge 2000 2001 vwait forever ---- !!!!!! %| [CategoryNetworking] |% !!!!!!