아래의 코드는 10 년 이상 동안 작동 해 왔으며 여전히 설치되어있는 다양한 종류의 리눅스를 실행하는 (사설 LAN상의) 소수의 컴퓨터에서 작동합니다 어제까지. 어제는, 새로 설치 한 CentOS 7 머신에서 시도했지만 오류가 발생하지는 않았지만 아무것도 수신되지 않았습니다. 나는 또한 upd 송신기를 검사했고 그것은 확실히이 새로운 기계의 로컬 IP 주소로 보내고있다. CentOS 7에서 UDP 패킷을받지 못하게하는 네트워크 프로토 콜에 대해 뭔가가 있습니까? 나는 lan에 새 컴퓨터를 설치할 때 몇 가지 다른 점을 알아 챘다. ifconfig가 없으면 (eth0이 eth0이 eth0으로 변경되었고/usr/sbin/setup 유틸리티가 내 컴퓨터를 보지 못했다. 나를 구성 할 수있게 해줘. 필자는 이러한 모든 장애물을 극복 할 수 있었고 컴퓨터는 ping, ssh, ypbind 등 모든 네트워크 기능을 수행하지만 일반적으로 $ sock-> recv의이 신비한 난청은 계속됩니다. 아무도 내가 이것을 고칠 수있는 방법을 알고 있습니까?perl IO :: 소켓은 새로운 Centos 7 컴퓨터에서 청각 장애인입니다
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: [email protected]";
$oldmsg = "This is the starting message.";
while ($sock->recv($newmsg, $MAXLEN)) {
# do some stuff with the data received.
}
방화벽이 실행되고 있습니까? – choroba
@choroba 당신은 대답으로 그것을 넣어야합니다. 그래서 나는 당신에게 상향 투표를 줄 수 있습니다! 방화벽이 절대적으로 실행되었습니다. 내가 iptables를 보지 않았을 때 나는 잘 가고 있다고 생각했지만 CentOS 7은 firewalld를 사용하므로 "service firewalld stop"과 "chkconfig firewalld off"로 인해 문제가 해결되었습니다. 고맙습니다. – gatorreina
이제 두 가지 문제가 있습니다. 오래된 스크립트와 불안전 한 머신. udp 서비스에 대한 방화벽 규칙을 추가하고 끄지 마십시오. – rurban