Article 7048 of comp.lang.perl:
Xref: feenix.metronet.com comp.lang.perl:7048
Path: feenix.metronet.com!news.ecn.bgu.edu!usenet.ins.cwru.edu!howland.reston.ans.net!europa.eng.gtefsd.com!uunet!olivea!pagesat!news.cerf.net!software.com!not-for-mail
From:
[email protected] (Michael D'Errico)
Newsgroups: comp.lang.perl
Subject: Re: Running a Perl net-server under inetd
Date: 20 Oct 1993 11:55:38 -0700
Organization: Software Now, Santa Barbara, CA
Lines: 25
Distribution: world
Message-ID: <
[email protected]>
References: <
[email protected]>
NNTP-Posting-Host: rome.software.com
[email protected] (Mike Hoffmann) writes:
>I tried this (adapted from the examples in the Camel book):
>$othersock = getpeername(0);
>($family, $port, $otheraddr) = unpack('S n a4 x8', $othersock);
>@otheraddr=unpack('C4', $otheraddr);
>printf "$family $port @otheraddr\n";
>How do I get the right socket of the caller? I had thought it would
>be mapped to the FD of stdin, i.e. 0. Am I wrong?
Use '$othersock = getpeername(STDIN);'
>Note that the above wont even work: With the "x8" in the template string,
>I get a
>"x outside of string at /usr/people/mike/src/internet/sniwp/sniwp line 8."
>message. Without the "x8" it runs, but still doesn't return any information.
Use 'S n a4 x8' to pack a sockaddr, and 'S n a4' to unpack it. For some
reason there is occasionally random junk in the last 8 bytes.
Michael D'Errico
[email protected]