帮我看看这个udp通信的问题

帮我看看这个udp通信的问题

客户端:
use IO::Socket;
$sock = IO::Socket::INET->new(PeerAddr=>'127.0.0.1',
PeerPort=>3000,
Proto=>'udp',
Listen=>3,
Reuse=>1);
$data="Hello";
foreach(1..10)
{
print $sock "$data\n";}
$sock->recv($msg,100,0);
print $msg;

close $sock;


服务器端
$sock = IO::Socket::INET->new(PeerAddr=>'127.0.0.1',
PeerPort=>3000,
Proto=>'udp',
Listen=>3,
Reuse=>1);
while(1)
{
$sock->recv($data,100,0);
print "$data\n";
$sock->send("I get","127.0.0.1");
}

为什么运行了上面的两个程序后,服务器收到了客户端发的数据,但是客户端没有收到服务器发的呢?
我感觉客户端的$sock->recv($msg,100,0);print $msg;这两句没有执行
在程序的开头加上:
use strict;
use warnings;
这些我都用了,是通的


QUOTE:
原帖由 擦肩而过的精灵 于 2008-4-23 18:44 发表
这些我都用了,是通的

错的是有点离谱...这样别人不肯帮你的.

client:

[Copy to clipboard] [ - ]
CODE:
use IO::Socket;
my $sock = IO::Socket::INET->new(   PeerPort  => 9999,
                                    PeerAddr  => 'localhost',
                                    Proto     => udp,
                                    Broadcast => 1
                                 )or die "Can't bind : $@\n";
for(1..10){
    print $sock "client $_\n";
}
my $msg;        
while($sock->recv($msg,100,0)){
    print $msg;
}

close $sock;

server:

[Copy to clipboard] [ - ]
CODE:
use IO::Socket;
my $sock = IO::Socket::INET->new(   LocalAddr => 'localhost',
                                    LocalPort => 9999,
                                    Proto     => udp,
                                    Broadcast => 1
                                 )or die "Can't bind : $@\n";
my $back;
while($sock->recv($back,100,0)){
    print $back;
    $sock->send("server recv\n",'localhost');
}

close $sock;

我也是刚看文档的,虽还不清楚参数是什么意思,但至少是通了.