Perl通过UDP套接字发送bitsequence时出现问题

时间:2013-06-03 09:47:57

标签: perl sockets bitmap

我正在使用perl脚本来模拟一个带有GPS接收器的temrinal,通过UDP套接字将特定格式的数据发送到地理服务器。

The data format is :
Message Type : 3 bits
Hours modulo 2 : 1bit
Minutes : 6 bits
misc flags I : 3 bits
Norh/South flag : 1 bit
Lattitude : 23 bits
East/West flag : 1 bit
Longitude : 25 bits
Misc flags II  (constant values) : (4 + 4 +8)16 bits
Total is 88 bits

使用打包/解包功能我设法构建了一个88位长的“1”和“0”序列(我猜它叫做位图?)。

my $packet = pack("b3 b1 b6 b6 b4 b3 b1 b23 b1 b24 S",0,$Hour,$Minute,$Second,$Ignit,4,$ns,$lat,$ew,$lon,64);

使用以下代码我打印88位长的序列:

print (unpack("b88",$packet)."\n");

然后,当我使用下面的代码发送它时,它发送一个UDP数据包,其有效载荷为16字节长,因此在原始比特序列中添加了5个字节。

my $MAXLEN  = 1024;
my $PORTNO  = 50000;
my $TIMEOUT = 5;
my $server_host = "10.1.1.3";
my $sock = IO::Socket::INET->new(Proto     => 'udp',
                          PeerPort  => $PORTNO,
                          PeerAddr  => $server_host)
or die "Creating socket: $!\n";
binmode($sock,raw);
$sock->send($packet); 

我的代码涉及socket有什么问题?

此致 托马斯

0 个答案:

没有答案