# phpman > man > IO::Socket::UNIX(3perl)

## NAME
    [IO::Socket::UNIX](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3AUNIX/markdown) - Object interface for AF_UNIX domain sockets

## SYNOPSIS
        use [IO::Socket::UNIX](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3AUNIX/markdown);

        my $SOCK_PATH = "$ENV{HOME}/unix-domain-socket-test.sock";

        # Server:
        my $server = [IO::Socket::UNIX](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3AUNIX/markdown)->new(
            Type => SOCK_STREAM(),
            Local => $SOCK_PATH,
            Listen => 1,
        );

        my $count = 1;
        while (my $conn = $server->accept()) {
            $conn->print("Hello " . ($count++) . "\n");
        }

        # Client:
        my $client = [IO::Socket::UNIX](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3AUNIX/markdown)->new(
            Type => SOCK_STREAM(),
            Peer => $SOCK_PATH,
        );

        # Now read and write from $client

## DESCRIPTION
    "[IO::Socket::UNIX](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3AUNIX/markdown)" provides an object interface to creating and using sockets in the AF_UNIX
    domain. It is built upon the [IO::Socket](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket/markdown) interface and inherits all the methods defined by
    [IO::Socket](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket/markdown).

## CONSTRUCTOR
    new ( [ARGS] )
        Creates an "[IO::Socket::UNIX](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3AUNIX/markdown)" object, which is a reference to a newly created symbol (see
        the "Symbol" package). "new" optionally takes arguments, these arguments are in key-value
        pairs.

        In addition to the key-value pairs accepted by [IO::Socket](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket/markdown), "[IO::Socket::UNIX](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3AUNIX/markdown)" provides.

            Type        Type of socket (eg SOCK_STREAM or SOCK_DGRAM)
            Local       Path to local fifo
            Peer        Path to peer fifo
            Listen      Queue size for listen

        If the constructor is only passed a single argument, it is assumed to be a "Peer"
        specification.

        If the "Listen" argument is given, but false, the queue size will be set to 5.

        If the constructor fails it will return "undef" and set the $[IO::Socket::errstr](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3Aerrstr/markdown) package
        variable to contain an error message.

            $sock = [IO::Socket::UNIX](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3AUNIX/markdown)->new(...)
                or die "Cannot create socket - $[IO::Socket::errstr](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3Aerrstr/markdown)\n";

        For legacy reasons the error message is also set into the global $@ variable, and you may
        still find older code which looks here instead.

            $sock = [IO::Socket::UNIX](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3AUNIX/markdown)->new(...)
                or die "Cannot create socket - $@\n";

## METHODS
### hostpath
        Returns the pathname to the fifo at the local end

### peerpath
        Returns the pathanme to the fifo at the peer end

## SEE ALSO
    Socket, [IO::Socket](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket/markdown)

## AUTHOR
    Graham Barr. Currently maintained by the Perl Porters. Please report all bugs to
    <<perlbug@perl.org>>.

## COPYRIGHT
    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.

