build: Update autosetup to v0.6.6-8-g062d650
[jimtcl.git] / examples / tcp.server
bloba86cd6364ee64b0b46b7c9417ff6a92be4daef6d
1 # Example of a udp server which sends a response
3 # Listen on port 20000. No host specified means 0.0.0.0
4 set s [socket stream.server 20000]
6 $s readable {
7         # Clean up children
8         os.wait -nohang 0
9         set sock [$s accept addr]
10         puts "Client address: $addr"
12         # Make this server forking so we can accept multiple
13         # simultaneous connections
14         if {[os.fork] == 0} {
15                 $s close
17                 $sock buffering line
19                 # Get the request (max 80 chars) - need the source address
20                 while {[$sock gets buf] >= 0} {
21                         set buf [string trim $buf]
22                         puts -nonewline "read '$buf'"
24                         try {
25                                 set result "$buf = [expr $buf]"
26                         } on error {msg} {
27                                 set result "Error: $buf => $msg"
28                         }
30                         puts ", sending '$result'"
32                         # Send the result back to where it came from
33                         $sock puts $result
34                 }
35         }
37         $sock close
40 vwait done