Portál AbcLinuxu, 5. května 2025 23:16

Dotaz: Perl a Socket

1.1.2015 12:11 Fibi86 | skóre: 1
Perl a Socket
Přečteno: 739×
Odpovědět | Admin
Ahoj přátelé drobného hazardu :-) Řeším teď takový problémek se skriptem, který načítá příchozí data na TCP port. Pokud skript nastavím na naslouchání UDP portu, tak mi nefunguje. Nevyhodí žádnou chybu, ale ukončí se a zbytek skriptu neprovede to, co by měl. Díky za radu
use threads;
use IO::Socket;
use DBI;


$SIG{CHLD} = 'IGNORE';
$| = 1;

my $server = new IO::Socket::INET (PF_INET, SOCK_DGRAM, getprotobyname("udp")); bind(UDP, sockaddr_in(8000, INADDR_ANY));(UDP);
#my $server = new IO::Socket::INET ( LocalAddr => 'GBOT', LocalPort => 8000, Proto => 'tcp', Listen => 5, ReuseAddr => 1 );
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.1.2015 13:18 novy rok
Rozbalit Rozbalit vše Re: Perl a Socket
Odpovědět | | Sbalit | Link | Blokovat | Admin
pokud skript nastavím na naslouchání UDP portu, tak mi nefunguje.

To je naprosto v pořádku.
1.1.2015 14:17 Fibi86 | skóre: 1
Rozbalit Rozbalit vše Re: Perl a Socket
Je naprosto v pořádku že nefunguje, nebo že je napsaný v pořádku? :-)
1.1.2015 16:46 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Perl a Socket

To první. Na UDP socketu se žádný listen() nedělá, protože to není proudový protokol, který by dělal spojení.

Každopádně ten kód máš dost zmatený. Třeba kde se vzalo UDP a co pak děláš se $server? Taky doporučuji hlídat návratové hodnoty jednotlivých volání. Podívej se do manuálu perlipc na slovo SOCK_DGRAM, abys načerpal inspiraci.

pavlix avatar 1.1.2015 17:11 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Perl a Socket
Skoro si říkám, jestli není škoda, že neumíme UDP listen tak jako umíme UDP connect :).
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
2.1.2015 14:07 Roman DAVID | skóre: 24 | Brno
Rozbalit Rozbalit vše Re: Perl a Socket
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevím, co má být výsledkem Vašeho kódu.

Příjem po UDP řeším následovně (opsáno z dokumentace, nebo nějakého howto):
use IO::Socket::INET;

$server = new IO::Socket::INET (
   LocalPort => '8000',
   Proto => 'udp',
) or die "ERROR in Socket Creation : $!\n";
2.1.2015 14:38 kolda
Rozbalit Rozbalit vše Re: Perl a Socket
+ 1

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.