diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-08-31 07:15:05 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 11:02:51 +1000 |
commit | a6b5998b080aac77c1b6151b97a64b0d79f3586f (patch) | |
tree | 3112f9646a161fd503c2afefffdf82b3abc55f7e /examples | |
parent | cbc635e8f4de48408768053a976dc7bd7177ba7a (diff) | |
download | jimtcl-a6b5998b080aac77c1b6151b97a64b0d79f3586f.zip jimtcl-a6b5998b080aac77c1b6151b97a64b0d79f3586f.tar.gz jimtcl-a6b5998b080aac77c1b6151b97a64b0d79f3586f.tar.bz2 |
Add basic ipv6 support to Jim
Use -ipv6 to signify that ipv6 should be used
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/sqlite3.tcl | 8 | ||||
-rw-r--r-- | examples/udp.client | 18 | ||||
-rw-r--r-- | examples/udp.server | 2 | ||||
-rw-r--r-- | examples/udp6.client | 27 | ||||
-rw-r--r-- | examples/udp6.server | 26 |
5 files changed, 79 insertions, 2 deletions
diff --git a/examples/sqlite3.tcl b/examples/sqlite3.tcl new file mode 100644 index 0000000..9365cdf --- /dev/null +++ b/examples/sqlite3.tcl @@ -0,0 +1,8 @@ +set db [sqlite3.open :memory:] +$db query {CREATE TABLE plays (id, author, title)} +$db query {INSERT INTO plays (id, author, title) VALUES (1, 'Goethe', 'Faust');} +$db query {INSERT INTO plays (id, author, title) VALUES (2, 'Shakespeare', 'Hamlet');} +$db query {INSERT INTO plays (id, author, title) VALUES (3, 'Sophocles', 'Oedipus Rex');} +set res [$db query "SELECT * FROM plays"] +$db close +foreach r $res {puts $r(author)} diff --git a/examples/udp.client b/examples/udp.client index 32dbc02..da74e77 100644 --- a/examples/udp.client +++ b/examples/udp.client @@ -2,10 +2,26 @@ set s [socket dgram] -foreach i [range 1 20] { +foreach i [range 1 5] { # Specify the address and port with sendto $s sendto "$i + $i + 10" 127.0.0.1:20000 # Receive the response - max length of 100 puts [$s recvfrom 100] } + +$s close + +# Now sending via a connected udp socket + +set s [socket dgram 127.0.0.1:20000] + +foreach i [range 5 10] { + # Socket is connected, so can just use puts here + # But remember to flush to ensure that each message is separate + $s puts -nonewline "$i * $i" + $s flush + + # Receive the response - max length of 100 + puts [$s recvfrom 100] +} diff --git a/examples/udp.server b/examples/udp.server index c462647..03f41cd 100644 --- a/examples/udp.server +++ b/examples/udp.server @@ -16,7 +16,7 @@ $s readable { set result "Error: $buf => $msg" } - puts ", sending '$result'" + puts ", sending '$result' to $addr" # Send the result back to where it came from $s sendto $result $addr diff --git a/examples/udp6.client b/examples/udp6.client new file mode 100644 index 0000000..f3e680e --- /dev/null +++ b/examples/udp6.client @@ -0,0 +1,27 @@ +# Example of sending from an unconnected ipv6 socket + +set s [socket -ipv6 dgram] + +foreach i [range 1 5] { + # Specify the address and port with sendto + $s sendto "$i + $i + 10" {[::1]:20000} + + # Receive the response - max length of 100 + puts [$s recvfrom 100] +} + +$s close + +# Now sending via a connected udp socket + +set s [socket -ipv6 dgram {[::1]:20000}] + +foreach i [range 5 10] { + # Socket is connected, so can just use puts here + # But remember to flush to ensure that each message is separate + $s puts -nonewline "$i * $i" + $s flush + + # Receive the response - max length of 100 + puts [$s recvfrom 100] +} diff --git a/examples/udp6.server b/examples/udp6.server new file mode 100644 index 0000000..da9b4bf --- /dev/null +++ b/examples/udp6.server @@ -0,0 +1,26 @@ +# Example of a udp server listening on ipv6 which sends a response +# Note that on many hosts, this will also respond to ipv4 requests too + +# Listen on port 20000. +set s [socket -ipv6 dgram.server {[::]:20000}] + +# For each request... +$s readable { + # Get the request (max 80 chars) - need the source address + set buf [$s recvfrom 80 addr] + + puts -nonewline "read '$buf' from $addr" + + 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 + $s sendto $result $addr +} + +vwait done |