http://www.perlmonks.org?node_id=984764


in reply to ipv6 support on windows

You're missing nothing? It works for me on Windows 7 with Strawberry 5.12.3.

VinsWorldcom@C:\Users\VinsWorldcom\tmp> ping ::1 Pinging ::1 with 32 bytes of data: Reply from ::1: time<1ms Reply from ::1: time<1ms Reply from ::1: time<1ms Reply from ::1: time<1ms Ping statistics for ::1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms VinsWorldcom@C:\Users\VinsWorldcom\tmp> test.pl Created a socket of type IO::Socket::IP VinsWorldcom@C:\Users\VinsWorldcom\tmp> ver Microsoft Windows [Version 6.1.7601] VinsWorldcom@C:\Users\VinsWorldcom\tmp> perl -v This is perl 5, version 12, subversion 3 (v5.12.3) built for MSWin32-x +64-multi-thread Copyright 1987-2010, Larry Wall

Replies are listed 'Best First'.
Re^2: ipv6 support on windows
by VinsWorldcom (Prior) on Aug 01, 2012 at 23:45 UTC

    I forgot the dependencies on Windows. Despite what you read, the Socket module does not support IPv6 on Windows in Perl 5.14 (at least in the Strawberry distribution). You still need Socket6 or Socket::GetAddrInfo.

    As you'll see in the modified code below, IO::Socket::IP is using Socket::GetAddrInfo in my case since I have it installed - do you?

    use IO::Socket::IP -register; for my $m (sort(keys(%INC))) { print "$m\n" } my $sock = IO::Socket->new( Domain => PF_INET6, LocalHost => "::1", Listen => 1, ) or die "Cannot create socket - $@\n"; print "Created a socket of type " . ref($sock) . "\n";

    And the output:

    VinsWorldcom@C:\Users\VinsWorldcom\tmp> test.pl AutoLoader.pm C:/strawberry/perl/lib/auto/POSIX/autosplit.ix C:/strawberry/perl/lib/auto/POSIX/load_imports.al Carp.pm Config.pm Config_git.pl Config_heavy.pl DynaLoader.pm Errno.pm Exporter.pm Exporter/Heavy.pm Fcntl.pm IO.pm IO/Handle.pm IO/Socket.pm IO/Socket/INET.pm IO/Socket/IP.pm IO/Socket/UNIX.pm POSIX.pm SelectSaver.pm Socket.pm Socket/GetAddrInfo.pm Socket/GetAddrInfo/Core.pm Socket/GetAddrInfo/XS.pm Symbol.pm Tie/Hash.pm XSLoader.pm base.pm strict.pm vars.pm warnings.pm warnings/register.pm Created a socket of type IO::Socket::IP
    UPDATE: Not quite right - the Socket module does support IPv6, the gcc compiler shipped with Strawberry 5.14 and recently verified 5.16 does not have the headers or the libraries to support compiling some of the IPv6 options - specifically inet_ntop() was failing for me. I recently corresponded with Paul Evans (https://rt.cpan.org/Ticket/Display.html?id=78890) - maintainer of Socket - and he clarified this for me. I have a workaround for compiling IPv6 support in Socket for Strawberry Perl on Windows that works for both 5.14 and 5.16 documented http://vinsworldcom.blogspot.com/2012/08/ipv6-in-perl-on-windows_20.html.
      thanks a lot, Socket6 worked for my active perl!