如何通过网络套接字发送perl哈希?

时间:2011-12-08 12:04:54

标签: perl networking serialization

我正在开发一个由服务器和多个客户端组成的工具。 客户端创建需要通过网络套接字发送到服务器的哈希。

我认为 nstore 是正确的做法,但我找不到在服务器上检索数据的方法。

有谁能告诉我如何正确地做到这一点?

问候尼克

PS:我知道我可以用某种字符串格式写入数据并在服务器上重建它,但我想知道是否可以避免这种情况。

3 个答案:

答案 0 :(得分:6)

发送:

Storable::nstore_fd( \%hash, $socket );

提取:

my $ref = Storable::fd_retrieve( $socket );

我认为这就是你所需要的。如果您不知道如何创建套接字 - 或者没有协议来启动它 - 是一个更紧迫的问题,我想。有关前者,请参阅IO::Socket::INET

答案 1 :(得分:5)

作为已发布解决方案的替代方案,您也可以使用YAMLJSON

答案 2 :(得分:-3)

你可以组合Data :: Dump和eval。我们的想法是序列化您的数据结构(哈希),传输和解码(评估):

$a = { ... }
$serializable_a = Data::Dump::dump($a)

# transmit && receive

$a_clone = eval( $serializable_a_received ) ;