Error[8]: Undefined offset: 5, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我试图在Perl中创建一个套接字客户端.服务器端是在本地主机上运行的C程序. 我必须在套接字上发送一个哈希值.这是我正在使用的一段代码. sub applyGlobalConfig { my ($globalConfig, $ignoreData) = @_; my $socket = IO::Socket::INET->new(PeerAddr => $PEER_HOST, 我试图在Perl中创建一个套接字客户端.服务器端是在本地主机上运行的C程序.

我必须在套接字上发送一个哈希值.这是我正在使用的一段代码.

sub applyGlobalConfig {    my ($globalConfig,$ignoreData) = @_;    my $socket = IO::Socket::INET->new(PeerAddr => $PEER_HOST,PeerPort => $PEER_PORT,Proto    => "tcp",Type     => SOCK_STREAM)          or dIE "Couldn't connect to $PEER_HOST:$PEER_PORT : $@\n";    my $reconfigResult;    print $socket "3\n";    close($socket);    unless ($reconfigResult) {        return 0;    }    return ERR_NulL;}

现在,问题是,$globalConfig将包含一个哈希引用,我想通过套接字发送它.我无法弄清楚.我用Google搜索并发现了一些对Dumper的引用,但不太了解.如何发送哈希?

解决方法 我更喜欢使用 Storable模块.例:

接收端:

use strict;use IO::Socket::INET;use Storable;use Data::Dumper;my   $sock = IO::Socket::INET->new(Listen    => 5,LocalAddr => 'host',LocalPort => 9000,Proto     => 'tcp');while( my $s = $sock->accept ) {    my $struct = Storable::fd_retrIEve($s);    print Dumper($struct);}

发送端:

use strict;use IO::Socket::INET;use Storable;my   $sock = IO::Socket::INET->new(PeerAddr => 'host',PeerPort => 9000,Type     => SOCK_STREAM,Proto     => 'tcp') || dIE "Fail: $!";my $struct = {    a => 1,b => [2,3,4]};Storable::nstore_fd($struct,$sock);

通过从i386 linux发送到amd64 FreeBSD进行测试.

你也可以使用Data :: Dumper从哈希中创建字符串,然后通过网络发送它的脏和错误的方法.

UPD:

But,I am struggling how to convert the values in the hash on perl sIDe to a string separated by space.

尝试使用join / map组合:

my $serialized = join("\n",map { "$_ ".$struct->{$_} } keys %$struct)."\n";

可能在C端,它更容易使用以null结尾的字符串:

my $keyvalue_count = scalar keys(%$struct);my $serialized = join("[+++]",map { "$_[+++]".$struct->{$_} } keys %$struct)."[+++]";

在这个简单的情况下,我更喜欢使用最后一个变体,因为它原生于C.

总结

以上是内存溢出为你收集整理的Perl套接字发送哈希全部内容,希望文章能够帮你解决Perl套接字发送哈希所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 6, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我试图在Perl中创建一个套接字客户端.服务器端是在本地主机上运行的C程序. 我必须在套接字上发送一个哈希值.这是我正在使用的一段代码. sub applyGlobalConfig { my ($globalConfig, $ignoreData) = @_; my $socket = IO::Socket::INET->new(PeerAddr => $PEER_HOST, 我试图在Perl中创建一个套接字客户端.服务器端是在本地主机上运行的C程序.

我必须在套接字上发送一个哈希值.这是我正在使用的一段代码.

sub applyGlobalConfig {    my ($globalConfig,$ignoreData) = @_;    my $socket = IO::Socket::INET->new(PeerAddr => $PEER_HOST,PeerPort => $PEER_PORT,Proto    => "tcp",Type     => SOCK_STREAM)          or dIE "Couldn't connect to $PEER_HOST:$PEER_PORT : $@\n";    my $reconfigResult;    print $socket "3\n";    close($socket);    unless ($reconfigResult) {        return 0;    }    return ERR_NulL;}

现在,问题是,$globalConfig将包含一个哈希引用,我想通过套接字发送它.我无法弄清楚.我用Google搜索并发现了一些对Dumper的引用,但不太了解.如何发送哈希?

解决方法 我更喜欢使用 Storable模块.例:

接收端:

use strict;use IO::Socket::INET;use Storable;use Data::Dumper;my   $sock = IO::Socket::INET->new(Listen    => 5,LocalAddr => 'host',LocalPort => 9000,Proto     => 'tcp');while( my $s = $sock->accept ) {    my $struct = Storable::fd_retrIEve($s);    print Dumper($struct);}

发送端:

use strict;use IO::Socket::INET;use Storable;my   $sock = IO::Socket::INET->new(PeerAddr => 'host',PeerPort => 9000,Type     => SOCK_STREAM,Proto     => 'tcp') || dIE "Fail: $!";my $struct = {    a => 1,b => [2,3,4]};Storable::nstore_fd($struct,$sock);

通过从i386 linux发送到amd64 FreeBSD进行测试.

你也可以使用Data :: Dumper从哈希中创建字符串,然后通过网络发送它的脏和错误的方法.

UPD:

But,I am struggling how to convert the values in the hash on perl sIDe to a string separated by space.

尝试使用join / map组合:

my $serialized = join("\n",map { "$_ ".$struct->{$_} } keys %$struct)."\n";

可能在C端,它更容易使用以null结尾的字符串:

my $keyvalue_count = scalar keys(%$struct);my $serialized = join("",map { "$_[+++]".$struct->{$_} } keys %$struct)."[+++]";

在这个简单的情况下,我更喜欢使用最后一个变体,因为它原生于C.

总结

以上是内存溢出为你收集整理的Perl套接字发送哈希全部内容,希望文章能够帮你解决Perl套接字发送哈希所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 7, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我试图在Perl中创建一个套接字客户端.服务器端是在本地主机上运行的C程序. 我必须在套接字上发送一个哈希值.这是我正在使用的一段代码. sub applyGlobalConfig { my ($globalConfig, $ignoreData) = @_; my $socket = IO::Socket::INET->new(PeerAddr => $PEER_HOST, 我试图在Perl中创建一个套接字客户端.服务器端是在本地主机上运行的C程序.

我必须在套接字上发送一个哈希值.这是我正在使用的一段代码.

sub applyGlobalConfig {    my ($globalConfig,$ignoreData) = @_;    my $socket = IO::Socket::INET->new(PeerAddr => $PEER_HOST,PeerPort => $PEER_PORT,Proto    => "tcp",Type     => SOCK_STREAM)          or dIE "Couldn't connect to $PEER_HOST:$PEER_PORT : $@\n";    my $reconfigResult;    print $socket "3\n";    close($socket);    unless ($reconfigResult) {        return 0;    }    return ERR_NulL;}

现在,问题是,$globalConfig将包含一个哈希引用,我想通过套接字发送它.我无法弄清楚.我用Google搜索并发现了一些对Dumper的引用,但不太了解.如何发送哈希?

解决方法 我更喜欢使用 Storable模块.例:

接收端:

use strict;use IO::Socket::INET;use Storable;use Data::Dumper;my   $sock = IO::Socket::INET->new(Listen    => 5,LocalAddr => 'host',LocalPort => 9000,Proto     => 'tcp');while( my $s = $sock->accept ) {    my $struct = Storable::fd_retrIEve($s);    print Dumper($struct);}

发送端:

use strict;use IO::Socket::INET;use Storable;my   $sock = IO::Socket::INET->new(PeerAddr => 'host',PeerPort => 9000,Type     => SOCK_STREAM,Proto     => 'tcp') || dIE "Fail: $!";my $struct = {    a => 1,b => [2,3,4]};Storable::nstore_fd($struct,$sock);

通过从i386 linux发送到amd64 FreeBSD进行测试.

你也可以使用Data :: Dumper从哈希中创建字符串,然后通过网络发送它的脏和错误的方法.

UPD:

But,I am struggling how to convert the values in the hash on perl sIDe to a string separated by space.

尝试使用join / map组合:

my $serialized = join("\n",map { "$_ ".$struct->{$_} } keys %$struct)."\n";

可能在C端,它更容易使用以null结尾的字符串:

my $keyvalue_count = scalar keys(%$struct);my $serialized = join("",map { "$_".$struct->{$_} } keys %$struct)."[+++]";

在这个简单的情况下,我更喜欢使用最后一个变体,因为它原生于C.

总结

以上是内存溢出为你收集整理的Perl套接字发送哈希全部内容,希望文章能够帮你解决Perl套接字发送哈希所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Perl套接字发送哈希_语言综合_内存溢出

Perl套接字发送哈希

Perl套接字发送哈希,第1张

概述我试图在Perl中创建一个套接字客户端.服务器端是在本地主机上运行的C程序. 我必须在套接字上发送一个哈希值.这是我正在使用的一段代码. sub applyGlobalConfig { my ($globalConfig, $ignoreData) = @_; my $socket = IO::Socket::INET->new(PeerAddr => $PEER_HOST, 我试图在Perl中创建一个套接字客户端.服务器端是在本地主机上运行的C程序.

我必须在套接字上发送一个哈希值.这是我正在使用的一段代码.

sub applyGlobalConfig {    my ($globalConfig,$ignoreData) = @_;    my $socket = IO::Socket::INET->new(PeerAddr => $PEER_HOST,PeerPort => $PEER_PORT,Proto    => "tcp",Type     => SOCK_STREAM)          or dIE "Couldn't connect to $PEER_HOST:$PEER_PORT : $@\n";    my $reconfigResult;    print $socket "3\n";    close($socket);    unless ($reconfigResult) {        return 0;    }    return ERR_NulL;}

现在,问题是,$globalConfig将包含一个哈希引用,我想通过套接字发送它.我无法弄清楚.我用Google搜索并发现了一些对Dumper的引用,但不太了解.如何发送哈希?

解决方法 我更喜欢使用 Storable模块.例:

接收端:

use strict;use IO::Socket::INET;use Storable;use Data::Dumper;my   $sock = IO::Socket::INET->new(Listen    => 5,LocalAddr => 'host',LocalPort => 9000,Proto     => 'tcp');while( my $s = $sock->accept ) {    my $struct = Storable::fd_retrIEve($s);    print Dumper($struct);}

发送端:

use strict;use IO::Socket::INET;use Storable;my   $sock = IO::Socket::INET->new(PeerAddr => 'host',PeerPort => 9000,Type     => SOCK_STREAM,Proto     => 'tcp') || dIE "Fail: $!";my $struct = {    a => 1,b => [2,3,4]};Storable::nstore_fd($struct,$sock);

通过从i386 linux发送到amd64 FreeBSD进行测试.

你也可以使用Data :: Dumper从哈希中创建字符串,然后通过网络发送它的脏和错误的方法.

UPD:

But,I am struggling how to convert the values in the hash on perl sIDe to a string separated by space.

尝试使用join / map组合:

my $serialized = join("\n",map { "$_ ".$struct->{$_} } keys %$struct)."\n";

可能在C端,它更容易使用以null结尾的字符串:

my $keyvalue_count = scalar keys(%$struct);my $serialized = join("",map { "$_".$struct->{$_} } keys %$struct)."";

在这个简单的情况下,我更喜欢使用最后一个变体,因为它原生于C.

总结

以上是内存溢出为你收集整理的Perl套接字发送哈希全部内容,希望文章能够帮你解决Perl套接字发送哈希所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1213207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存