2016-04-14 18 views
0
#!/usr/bin/perl 

use warnings; use strict; 

use IO::Socket::INET; 

our $local_host = "0.0.0.0"; 
our $local_port = "14267"; 


$SIG{'CHLD'} = 'IGNORE'; 
my $bind = IO::Socket::INET->new(
         Listen=>5, 
         LocalAddr=>$local_host.':'.$local_port, 
         ReuseAddr=>1) 
         or die print('Could not bind: ' .$local_host.':'.$local_port); 

bunun işe yaradığını terminalden bu kodu çalıştırmak için çalışıyorum ama tarayıcıdan çalıştırmak çalıştığınızda o bağlamak olamazdı dönmek vbPerl IO :: Socket :: INET

Birisi açıklayabilir misin sorun ne? Bence kullanıcı ayrıcalıkları ile ilgili değil.

+1

Bunu yapmak için tam olarak ne bekliyorsunuz? Terminalde "işe yarıyor" ile ne demek istiyorsun? Bunu tarayıcınızdan nasıl arıyorsun? Terminalden – stevieb

+0

$ perl test.pl çalışır. tarayıcıdan exec() shell_exec() syste() gibi php işleviyle çalıştırmayı denerim. –

+2

"vs vs .... 'yi bağlayamadı" - "$!" (Yani, $ ERRNO) sorunu hakkında daha fazla ayrıntı içermelidir. Lütfen kodunuza ekleyin ve sorunuza çıktı. –

cevap

2

Nasıl bağlanamadığını nereden biliyorsunuz? Ne hata olursa olsun her zaman "Bağlanamadı" girişiniz var! Daha önemlisi, hangi hatanın oluştuğu kaydetmezsiniz! İlk adım bunu düzeltmek olurdu.

#!/usr/bin/perl 

use warnings; use strict; 

use IO::Socket::INET; 

my $local_port = 14267; 

my $server_socket = IO::Socket::INET->new(
    LocalPort => $local_port, 
    Listen => 5, 
    ReuseAddr => 1, 
) 
    or die("Can't create server socket: [email protected]"); # <-- The relevant change. 

SElinux gibi bir güvenlik çerçevesi nedeniyle bir çeşit izin hatası alacağınızdan şüpheleniyorum.

+0

Merak için '$ @' (genellikle son 'status'un hata mesajı için kullanılır) bir yazım hatası değildir; IO :: * ailesindeki modüller genellikle hataları bildirir. Bu kafa karıştırıcı, ama [bu noktada değiştirmek zor olurdu] (https://rt.perl.org/Public/Bug/Display.html?id=120764). – ThisSuitIsBlackNot

+0

Çözdüm, hata yaptım, izin sorunlarım var, teşekkür ederim. –

+0

SELinux veya başka bir şey olup olmadığını nasıl anlayacağımı bilmiyorum. SELinux ise, soket oluşturmanıza izin vermenin bir yolu vardır. Googling bunu kolayca bulmalı. – ikegami

İlgili konular