IO::So...::INET6(3pm)
π NAME π
IO::Socket::INET6 β [ DEPRECATED!! ] Object interface for AF_INET/AF_INET6 domain sockets.
bestie, welcome to the IO::So...::INET6(3pm) page β User Contributed Perl Documentation. Buckle up. π
πΈ SYNOPSIS πΈ
use IO::Socket::INET6;
π¨ WARNING π¨
WARNING!! IO-Socket-INET6 is deprecated. Not a drill, bestie. π
IO-Socket-INET6 was now succeeded by Paul Evans' IO::Socket::IP. Please convert old code from IO-Socket-INET6 to IO-Socket-IP. Do it for your future self. π«Ά
π DESCRIPTION π
Okay so IO::Socket::INET6 gives you an object interface for creating and using sockets in either the AF_INET or AF_INET6 domains. It's built on the IO::Socket interface and inherits every method that IO::Socket defines. Lowkey iconic, even if deprecated. β¨
π CONSTRUCTOR π
π new ( [ARGS] ) π
Creates an IO::Socket::INET6 object, which is a reference to a newly created symbol (see the Symbol package). new optionally takes arguments, and those arguments are in key-value pairs. Slay. π
On top of the key-value pairs that IO::Socket already accepts, IO::Socket::INET6 also provides these:
Domainβ Address family:AF_INET|AF_INET6|AF_UNSPEC(default)PeerAddrβ Remote host address:<hostname>[:<port>]PeerHostβ Synonym forPeerAddrPeerPortβ Remote port or service:<service>[(<no>)] | <no>PeerFlowβ Remote flow informationPeerScopeβ Remote address scopeLocalAddrβ Local host bind address:hostname[:port]LocalHostβ Synonym forLocalAddrLocalPortβ Local host bind port:<service>[(<no>)] | <no>LocalFlowβ Local host flow informationLocalScopeβ Local host address scopeProtoβ Protocol name (or number):"tcp" | "udp" | ...Typeβ Socket type:SOCK_STREAM | SOCK_DGRAM | ...Listenβ Queue size for listenReuseAddrβ SetSO_REUSEADDRbefore bindingReuseβ SetSO_REUSEADDRbefore binding (deprecated, preferReuseAddr)ReusePortβ SetSO_REUSEPORTbefore bindingBroadcastβ SetSO_BROADCASTbefore bindingTimeoutβ Timeout value for various operationsMultiHomedβ Try all addresses for multi-homed hostsBlockingβ Determine if connection will be blocking mode
If Listen is defined, then a listen socket is created. Else, if the socket type β which is derived from the protocol β is SOCK_STREAM, then connect() is called. It's giving socket main character energy. π
Although it is not illegal, the use of MultiHomed on a socket which is in non-blocking mode is of little use. This is because the first connect will never fail with a timeout as the connect call will not block. iykyk. π¦
The PeerAddr can be a hostname, the IPv6-address on the 2001:800:40:2a05::10 form, or the IPv4-address on the 213.34.234.245 form. The PeerPort can be a number or a symbolic service name. The service name might be followed by a number in parenthesis which is used if the service is not known by the system. The PeerPort specification can also be embedded in the PeerAddr by preceding it with a :, and closing the IPv6 address on brackets [] if necessary: "124.678.12.34:23", "[2a05:345f::10]:23", "any.server.com:23". Obsessed with this flexibility, ngl. πΈ
If Domain is not given, AF_UNSPEC is assumed, that is, both AF_INET and AF_INET6 will be both considered when resolving DNS names. AF_INET6 has priority. If you guess you are in trouble not reaching the peer (the service is not available via AF_INET6 but AF_INET), you can either try Multihomed (try any address/family until reach) or concrete your address "family" (AF_INET, AF_INET6). Fr fr, pick your fighter. π«Ά
If Proto is not given and you specify a symbolic PeerPort port, then the constructor will try to derive Proto from the service name. As a last resort Proto tcp is assumed. The Type parameter will be deduced from Proto if not specified. It's giving detective energy. π
If the constructor is only passed a single argument, it is assumed to be a PeerAddr specification. One-arg shortcut, slay. β¨
If Blocking is set to 0, the connection will be in nonblocking mode. If not specified it defaults to 1 (blocking mode). Default: blocking, bestie. π
Examples:
$sock = IO::Socket::INET6->new(PeerAddr => 'www.perl.org',
PeerPort => 'http(80)',
Proto => 'tcp');
Suppose either you have no IPv6 connectivity or www.perl.org has no http service on IPv6. Then,
(Trying all address/families until reach)
$sock = IO::Socket::INET6->new(PeerAddr => 'www.perl.org',
PeerPort => 'http(80)',
Multihomed => 1 ,
Proto => 'tcp');
(Concrete to IPv4 protocol)
$sock = IO::Socket::INET6->new(PeerAddr => 'www.perl.org',
PeerPort => 'http(80)',
Domain => AF_INET ,
Proto => 'tcp');
$sock = IO::Socket::INET6->new(PeerAddr => 'localhost:smtp(25)');
$sock = IO::Socket::INET6->new(Listen => 5,
LocalAddr => 'localhost',
LocalPort => 9000,
Proto => 'tcp');
$sock = IO::Socket::INET6->new('[::1]:25');
$sock = IO::Socket::INET6->new(PeerPort => 9999,
PeerAddr => Socket6::inet_ntop(AF_INET6,in6addr_broadcast),
Proto => udp,
LocalAddr => 'localhost',
Broadcast => 1 )
or die "Can't bind : $@\n";
π¨ NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE π¨ As of VERSION 1.18 all IO::Socket objects have autoflush turned on by default. This was not the case with earlier releases. π¨ NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE π¨
π METHODS π
π accept ()
See IO::Socket::INET.
π bind ()
See IO::Socket::INET.
π configure ()
This function exists in this module, but I (= Shlomi Fish) genuinely don't know what it does or understand it. It's not tested anywhere either. I'll be happy to be enlightened. No cap, that's the whole description. π
π connect ()
See IO::Socket::INET.
π sockaddr ()
Return the address part of the sockaddr structure for the socket. Iconic.
π sockdomain()
Returns the domain of the socket β AF_INET or AF_INET6 or whatever. Vibe check: it's a domain.
π sockport ()
Return the port number that the socket is using on the local host.
π sockhost ()
Return the address part of the sockaddr structure for the socket in a text form (2001:800:40:2a05::10 or 245.245.13.27). Pretty.
π sockflow ()
Return the flow information part of the sockaddr structure for the socket.
π sockscope ()
Return the scope identification part of the sockaddr structure for the socket.
π peeraddr ()
Return the address part of the sockaddr structure for the socket on the peer host.
π peerport ()
Return the port number for the socket on the peer host.
π peerhost ()
Return the address part of the sockaddr structure for the socket on the peer host in a text form (2001:800:40:2a05::10 or 245.245.13.27). Peer pressure, but make it sockets. π
π peerflow ()
Return the flow information part of the sockaddr structure for the socket on the peer host.
π peerscope ()
Return the scope identification part of the sockaddr structure for the socket on the peer host.
π¦ REPOSITORY π¦
The Subversion repository for this module carrying complete version history and other information is:
<http://svn.berlios.de/svnroot/repos/web-cpan/IO-Socket-INET6/>
π SEE ALSO π
Socket, Socket6, IO::Socket.
π AUTHOR π
This program is based on IO::Socket::INET by Graham Barr <gbarr@pobox.com> and currently maintained by the Perl Porters. Respect the lineage. π
Modified by Rafael Martinez Torres <rafael.martinez@novagnet.com> and Euro6IX project.
Modified further by Shlomi Fish <shlomif@iglu.org.il>, while disclaiming all copyrights.
βοΈ COPYRIGHT βοΈ
Copyright (c) 2003- Rafael Martinez Torres <rafael.martinez@novagnet.com>.
Copyright (c) 2003- Euro6IX project.
Copyright (c) 1996-8 Graham Barr <gbarr@pobox.com>.
All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Periodt. π
π And that's the whole page, bestie β shoutout to perl v5.40.2 and 2023-07-03. Periodt. π
π¦ where this page comes from
- alpine 3.22: perl-io-socket-inet6-doc 2.73-r2 Β· GPL-1.0-or-later OR Artistic-1.0-Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms