Re: binary data over UDP with PHP?
| From: | Aidan Lister | Date: | Thu, 08 Jul 2004 07:50:16 +0000 |
| Subject: | Re: binary data over UDP with PHP? | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-189945@lists.php.net to get a copy of this message | ||
If you're receiving binary data back, this function may interest you:
http://aidan.dotgeek.org/lib/?file=function.hexdump.php
Also, why are you messing with chr etc?
$string = "\x00\x01\xFF";
etc.
"Coder_1024" <coder_1024@hotmail.com> wrote in message
news:20040708022403.82466.qmail@pb1.pair.com...
> Thanks for the feedback. As it turns out, the reason I was getting zero
> data bytes in my UDP packet was that I had declared the packet variable
> outside the function in which I was using it.
>
> $packet = chr(0x01).chr(0x1d).... etc
>
> function doSomething($x)
> {
> // using $packet in here gives you an empty variable.
> }
>
> So I guess it was a very basic PHP language thing I was running into.
Guess
> I've done too much Perl and assumed the variables were accessible in the
> function. :-)
>
>
> "Keith Greene" <hitek@cox.net> wrote in message
> news:6.1.1.1.0.20040707170321.01dda740@pop.west.cox.net...
> > I use the following without problem:
> >
> > $fp = fsockopen("udp://www.server.com", 24250, &$errno,
&$errstr,
> .2);
> > if (!$fp) {
> > $status = "Server not available";
> > } else {
> > $trigger =
> >
> > chr(hexdec('FF')).chr(hexdec('FF')).chr(hexdec('01')).chr(hexdec('00'));
> > fwrite($fp,$trigger); # Send trigger to the
> > status server
> > $junk = fread($fp, 4); # discard echoed
command
> > from status server
> > }
> >
> > Keith
> >
> > At 04:23 PM 7/7/2004, coder_1024 wrote:
> > >I'm trying to send some binary data to a UDP server using PHP. The
> examples
> > >I've been able to find show sending binary data over TCP, or they show
> > >sending text over UDP.
> > >
> > >I'm constructing the messages using the below:
> > >
> > > $text_msg = "Hello, World\r\n";
> > > $binary_msg = chr(0x01).chr(0x02).chr(0x00).chr(0xAD);
> > > $binary_msg_size = 4;
> > >
> > >I've tried a couple methods of sending the data:
> > >
> > > $fp = fsockopen("udp://" . $host,$port,....);
> > > fwrite($fp,$binary_msg,$binary_msg_size);
> > >
> > >and
> > >
> > > $sock = socket_create(AF_INET,SOCK_DGRAM,SOL_UDP);
> > > socket_sendto($sock,$binary_msg,$binary_msg_size,0,$host,$port);
> > >
> > >In either case, a UDP packet is sent, but with a zero data size. If I
> > >instead send the $text_msg, it works as expected. For some reason
> sending
> > >the binary data doesn't work.
> > >
> > >Does anyone have insight into how to send binary data over UDP using
PHP?
> > >
> > >--
> > >PHP General Mailing List (http://www.php.net/)
> > >To unsubscribe, visit: http://www.php.net/unsub.php