You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
963 B
39 lines
963 B
#!/usr/bin/env tclsh |
|
# multicast.tcl - Copyright (C) 2004 Pat Thoyts <patthoyts@users.sf.net> |
|
# |
|
# Demonstrate the use of broadcast UDP sockets. |
|
# |
|
# You can send to ths using netcat: |
|
# echo HELLO | nc -u 192.168.255.255 7772 |
|
# |
|
# $Id: broadcast.tcl,v 1.1 2004/11/22 23:48:47 patthoyts Exp $ |
|
|
|
package require udp 1.0.6 |
|
|
|
proc udpEvent {chan} { |
|
set data [read $chan] |
|
set peer [fconfigure $chan -peer] |
|
puts "$peer [string length $data] '$data'" |
|
if {[string match "QUIT*" $data]} { |
|
close $chan |
|
set ::forever 1 |
|
} |
|
return |
|
} |
|
|
|
# Select a subnet and the port number. |
|
set subnet 192.168.255.255 |
|
set port 7772 |
|
|
|
# Create a listening socket and configure for sending too. |
|
set s [udp_open $port] |
|
fconfigure $s -buffering none -blocking 0 |
|
fconfigure $s -broadcast 1 -remote [list $subnet $port] |
|
fileevent $s readable [list udpEvent $s] |
|
|
|
# Announce our presence and run |
|
puts -nonewline $s "hello, world" |
|
set forever 0 |
|
vwait ::forever |
|
|
|
exit
|
|
|