这么简单的socket通信程序,怎么不能正常工作?

这么简单的socket通信程序,怎么不能正常工作?

这么简单的socket通信程序,怎么不能正常工作?
这么简单的socket通信程序,怎么不能正常工作??[CCB]10[/CCB][CCB]8[/CCB]

目的:使用perl,socket编程,实现两主机间通信。

在一台机上,运行通过。但当建立两台机之间通信时,
报错:connect refuse.

可以确定,两边都没有安装防火墙。

各为大侠,帮帮忙啊!毕业设计要用的。

服务端: (IP为:219.222.171.32)

#!/usr/bin/perl

use strict;
use warnings;
use IO::Socket;

my $sock = new IO::Socket::INET (LocalAddr => 'localhost',
LocalPort => 7777,
Proto => 'tcp',
Listen => 5);
die "Could not create socket: $!\n" unless $sock;

my $new_sock = $sock->accept();
my @result;
my $i = 0;
while(<$new_sock>) {
$result[$i] = $_;
$i++;
}
close($new_sock);

print @result;

客户端:

#!/usr/bin/perl

use strict;
use warnings;

use IO::Socket;

my $send_sock = new IO::Socket::INET (PeerAddr => '219.222.171.32',
PeerPort => 7777,
Proto => 'tcp');
die "$!" unless $send_sock;

print $send_sock "Hello vcanv.\n";


作业都拿到论坛里面,让别.
作业都拿到论坛里面,让别人帮你做
这样对你不是很好,你最好自己先去阅读一下相关的IO::socket的帮助说明
perldoc -t IO::Socket
要学会自己阅读帮助,看了帮助,程序总会报错,将报错error提交到google,应该别人也有遇到这种问题,如果实在无法解决的话,再提问。不然自己水平总不能得到提高!
really simple?
最好去看看 Socket 程序的调试技巧,否则确实没法解决这样的问题。C/S 之间可能的问题非常多,自己解决之前不如去用 telnet 作为 Client 测试一下。建议看看 Unix Network Programming 里面的前四章和最后的调试技巧,非常有助于提高网络编程能力。
谢谢你们的回复,感激不尽.
谢谢你们的回复,感激不尽。
问题有新进展啦:
其实真正的问题是,就算在本机,如果把客户端的PeerAddr => '127.0.0.1', 连接就成功;如果把客户端的PeerAddr => '219.222.171.32',连接就拒绝。其中219.222.171.32是本机地址呀。

本机都这样了,如果是两机之间通信,就不可能啦。

为什么呀?时间比较紧啊!
[CCB]10[/CCB]
在 192.168.0.100上启动之.
在 192.168.0.100上启动之后,在本地和另外一台ip机子上能实现交互。
#!/usr/bin/perl
use IO::Socket;
my $server_port=7777;
my $server_ip='192.168.0.100';
$server = IO::Socket::INET->new(LocalAddr =>$server_ip,
LocalPort => $server_port,
Proto =>'tcp',
Reuse => 1,
Listen => 10 ) # or SOMAXCONN
or die "Couldn't be a tcp server on port $server_port : $@\n";
my $quit=0;
$|=1;
$SIG{INT}=sub {$quit++};
while (!$quit) {

next unless my $client = $server->accept();
my $port=$client->peerport;
my $peer=gethostbyaddr($client->peeraddr,AF_INET)||$client->peerhost;
print "Connection from ($peer,$port) \n";
while (<$client>) {

$bytes_in+=length($_);
my $msg_in=$_;
print "$msg_in\n";
chomp;
my $msg_out=(scalar reverse $_)."\n";
print $client $msg_out;
$bytes_out+=length($msg_out)
}
}
warn "Connection from ($peer,$port ) finished\n";
close $client;
}
print STDERR "bytes_sent=$bytes_out,bytes_received=$bytes_in\n";
close($server);