如何在Perl中的客户端服务器程序中发送数组?

前端之家收集整理的这篇文章主要介绍了如何在Perl中的客户端服务器程序中发送数组?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Client-Server Perl程序.我想将存储在数组中的消息发送到服务器.

服务器代码

use IO::Socket::INET;

# Creating a a new socket
$socket=new IO::Socket::INET->new(LocalPort=>5000,Proto=>'udp');

print "\nUDPServer Waiting for client on port 5000";

while(1)
{
    $socket->recv($recieved_data,1024);
    $peer_address = $socket->peerhost();
    $peer_port = $socket->peerport();
    print "\n($peer_address,$peer_port) said : $recieved_data";
}

客户代码::

use IO::Socket::INET;

# Create a new socket
$socket=new IO::Socket::INET->new(PeerAddr=>'127.0.0.1',PeerPort=>5000,Proto=>'udp');

@message_array = ("message",120,"sample");
$socket->send(@message_array);

在服务器端我改变了,

$socket->recv(@recieved_data,1024);

但我收到这样的错误,

UDPServer Waiting for client on port 5000usage: $sock->recv(BUF,LEN [,FLAGS]) at udp_server.pl line 17

如何发送数组并在服务器端打印或显示它.

解决方法

您必须序列化数据.您通过线路发送序列化的数据块然后反序列化它.

有很多选择.印度尼西亚Perl贩子最近发了a comparison of serialization modules

Perl附带Storable,可以正常工作,但你必须要小心,模块没有以某种方式改变,以便一个版本的序列化与另一个版本一起使用.

有些数据格式(如YAMLJSON)可能更好,因为它们不依赖于模块版本.两者都可以处理复杂的数据结构,虽然YAML可以处理Perl对象而JSON不能(尽管JSYNC可以).每个选项都有不同的权衡.

猜你在找的Perl相关文章