Xref: feenix.metronet.com vmsnet.networks.tcp-ip.cmu-tek:356
Newsgroups: vmsnet.networks.tcp-ip.cmu-tek
Path: feenix.metronet.com!news.utdallas.edu!tamsun.tamu.edu!cs.utexas.edu!usc!howland.reston.ans.net!noc.near.net!uunet!dove!news.nist.gov!przemek
From: przemek@rrdbartok.nist.gov (Przemek Klosowski)
Subject: broadcast using CMU-tek
Message-ID: <PRZEMEK.93Jun16210704@rrdbartok.nist.gov>
Sender: news@dove.nist.gov
Organization: U. of Maryland/NIST
Date: Thu, 17 Jun 1993 02:07:04 GMT
Lines: 52

Hello,

We have been using client CMU-tek for some time; now, however, I need
to write a program to broadcast UDP packets to the network. The idea
is that when our vaxes collect a new data record they would broadcast
this fact, avoiding the need for continuous polling that we do now. A
short Perl code that does what I need on Unix is enclosed at the end
of this article.

What is the best way to do it? The programming section of the manual
mentions that ipacp enables new QIO codes that deal with the TCP/IP
operations; however, I could't figure out how to write the broadcast
code. Also, I couldn't figure out where are the files that define
those QIO codes.

I also found out about the SOCKIT library; it looks as if I could take
the Unix code directly to it; but again, I couldn't figure out how do
I get all the magic constants (AF_INET, SO_BROADCAST, etc)---there are
no .h files in the SOCKIT directory.

Thanks for any help you may provide

	przemek



$port = 8080;			
$sockaddr = "S n a4 x8";($name,$aliases,$proto) = getprotobyname('udp');

chop($hostname = `hostname`);
($name,$aliases,$type,$len,$myaddr) = gethostbyname($hostname);
@myaddr=unpack("C4",$myaddr);
pop(@myaddr);push(@myaddr,255); # works only for ff:ff:ff:00 subnet mask
$broadaddr=pack("C4",@myaddr);

$me   = pack($sockaddr,&AF_INET, 0,     $myaddr);
$them = pack($sockaddr,&AF_INET, $port, $broadaddr);

socket(S, &AF_INET, &SOCK_DGRAM, $proto) || die $!;
setsockopt(S,&SOL_SOCKET,&SO_BROADCAST,1) || die $1;
bind(S, $me) || die $!;

send(S,"01234567 Hello everyone 01234567\n",0,$them) || die $!;


--
			przemek klosowski (przemek@rrdstrad.nist.gov)
			Reactor Division (bldg. 235), E111
			National Institute of Standards and Technology
			Gaithersburg, MD 20899,      USA

			(301) 975 6249