# Example of a udp server which sends a response # Listen on port 20000. No host specified means 0.0.0.0 set s [socket stream.server 20000] $s readable { # Clean up children wait -nohang 0 set sock [$s accept addr] puts "Client address: $addr" # Make this server forking so we can accept multiple # simultaneous connections if {[os.fork] == 0} { $s close $sock buffering line # Get the request (max 80 chars) - need the source address while {[$sock gets buf] >= 0} { set buf [string trim $buf] puts -nonewline "read '$buf'" try { set result "$buf = [expr $buf]" } on error {msg} { set result "Error: $buf => $msg" } puts ", sending '$result'" # Send the result back to where it came from $sock puts $result } } $sock close } vwait done