Portál AbcLinuxu, 10. května 2025 05:31

Dotaz: Jak zjistit IP klienta

12.11.2008 12:41 myšák | skóre: 26 | blog: EmentuX | Ostrava
Jak zjistit IP klienta
Přečteno: 297×
Odpovědět | Admin
Zdravím,
snažím se sbastlit v PERLu aplikaci, která naslouchá a na otevřeném portu a veškerou příchozí komunikaci sype do souboru. Až sem není problém. Co bych ovšem potřeboval (a s čím nemůžu hnout) je - Jak zjistit IP adresu klienta, který se zrovna připojil k tomu mému prográmku a posílá mi data. Lze to nějak elegantně udělat na "serverové" straně? Tady jsem prostě v koncích :-(
Díky za každé nakopnutí.
Je nesmírně těžké být idiotem, konkurence je obrovská...
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.11.2008 13:12 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak zjistit IP klienta
Odpovědět | | Sbalit | Link | Blokovat | Admin
Lze, kód, který přijímá spojení (accept) určitě IP adresu druhé strany poskytuje. Jak konkrétně se ta IP adresa zjistí ale záleží na tom, jaké používáte API. Nebylo by od věci sem část vašeho kódu, který přijímá spojení, vložit…
12.11.2008 13:18 myšák | skóre: 26 | blog: EmentuX | Ostrava
Rozbalit Rozbalit vše Re: Jak zjistit IP klienta
Jak říkám - díky za každé nakopnutí. Pořád jsem chodil okolo a dneska se na mě usmálo štěstí. Nějak jsem přehlídnul to, že v rámci accept mi to cpe i IP adresu a hledal jsem ji všude možně jinde /a blbě/.

Ukázka kódu pro eventuální zájemce je zde:
#!/usr/bin/perl -w
use strict;
use IO::Socket;
my $sock = new IO::Socket::INET(
                   LocalHost => 'localhost',
                   LocalPort => 1234,
                   Proto     => 'tcp',
                   Listen    => SOMAXCONN,
                   Reuse     => 1);
$sock or die "no socket :$!";
my($new_sock, $c_addr, $buf);
while (($new_sock, $c_addr) = $sock->accept()) {
    my ($client_port, $c_ip) =
                     sockaddr_in($c_addr);
    my $client_ipnum = inet_ntoa($c_ip);
    print "IP adreesa klienta: $client_ipnum \n";
}


Je nesmírně těžké být idiotem, konkurence je obrovská...

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.