linux - perl IO::Socket 在新的 Centos 7 机器上是聋的

标签 linux perl sockets networking

下面的代码已经工作了十多年,并且仍然在少数运行各种 linux 版本的机器(在私有(private) LAN 上)上运行,直到昨天我还安装了它。昨天,我在一台新安装的 CentOS 7 机器上试了一下,虽然我没有收到任何错误,但什么也没有收到。我也检查了upd发送机器,它肯定是发送到这台新机器的本地IP地址。 CentOS 7 中的网络协议(protocol)调用有什么东西会阻止接收 UDP 数据包吗?在 LAN 上设置新机器时,我确实注意到一些不同之处:ifconfig 不存在(我安装了它),eth0 被称为 enp9,所以我将其更改为 eth0 并且/usr/sbin/setup 实用程序没有看到我的nic 以便让我配置它。我——我相信——能够克服所有这些障碍,并且机器正常执行所有网络功能 ping、ssh、ypbind 等,但是 $sock->recv 的神秘失聪仍然存在。有谁知道我该如何解决这个问题?

use Socket;
use IO::Socket;
my ($sock, $oldmsg, $newmsg, $MAXLEN);  #porto def.
$MAXLEN = 1024;
my $PORTNO = 5151;

my $sock = IO::Socket::INET->new(LocalPort => $PORTNO, Proto => 'udp')
    or die "socket: $@";
$oldmsg = "This is the starting message.";

while ($sock->recv($newmsg, $MAXLEN)) {

# do some stuff with the data received.

}

最佳答案

确保没有运行阻止流量的防火墙。如果有,请更改其配置以允许您的特定数据包通过。

关于linux - perl IO::Socket 在新的 Centos 7 机器上是聋的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47060303/

相关文章:

linux - 设置这些 Tortoise SVN 提交 Hook

linux - 找不到 emacs 启动文件

perl - 为什么 perl one liner 输出取决于开关位置

arrays - Perl:如何迭代多个对象中的数组并从 Web 服务中提取值

sockets - SBCL 套接字 : reuse-address

linux - 如何在 Linux shell 中检查文件是否只包含零?

linux - Unix - 文件名开头的空格

python - 将 Python PyCrypto 与 Perl Crypt::CBC 结合使用

c# - 我该如何解决有关 TcpListener : Please use TcpListener(IPAddress localaddr, int port) 的警告?

c# - C# 中 TCP 套接字中的 System.ObjectDisposedException