Hello Perl gurus,

I thought I would post a summary of what I found on this question I asked the other
day.  The original question was how to send a binary stream of data
across a socket from the TCP client end.  How to use pack() and
syswrite() were some of my questions.  Well I did end up using pack
to create a byte stream in binary representation,
and was able to send 10 bytes of data below, byte-by-byte, from a Red
Hat Linux 7.2 machine (big-endian order) to a big-endian TCP server. I
used the first two bytes to specify the length of the string.

Here is what the code looks like.  I hope this helps anyone that needs
to implement something like this in the future.  Now to the receiving
end.  The fun begins!


#################################################
# Let's take a closer look at the actual message
#################################################
$Len1 = 0x00;
$Len2 = 0x0A;
$SVCA = 0x96;
$DVCA = 0xDF;
$CTRL = 0x40;
$STAT = 0x00;
$FUNCID = 0x83;
$ACCESS = 0x04;
$RGB1 = 0x00;
$RGB2 = 0x00;
$RGB3 = 0x00;
$RGB4 = 0x0A;
#################################################

#Building the bytestream
$bytestring = pack('C*', $Len1, $Len2, $SVCA, $DVCA, $CTRL, $STAT, $FUNCID, $ACCESS, 
$RGB1, $RGB2, $RGB3, $RGB4);
$len = length($bytestring);

#######
# Here is the routine that sends to the socket...Needs work
#######
$offset = 0;
$bytes_to_write = $len - $offset;
$bytes_written  = 0;
while ($bytes_to_write) {
        $bytes_written = syswrite ($socket, $bytestring, $bytes_to_write, $offset);
        $offset         += $bytes_written;
        $bytes_to_write -= $bytes_written;
        }


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to