---
name: "IO::Socket::INET"
section: "3p"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["openbsd"]
url: "https://new.carta.tech/IO::Socket::INET"
---

# IO::Socket::INET(3p)

Object interface for AF\_INET domain sockets

## NAME

IO::Socket::INET - Object interface for AF\_INET domain sockets

## SYNOPSIS

```
    use IO::Socket::INET;
```

## DESCRIPTION

`"IO::Socket::INET"` provides an object interface to creating and using sockets in the AF\_INET domain. It is built upon the IO::Socket interface and inherits all the methods defined by IO::Socket.

## CONSTRUCTOR

- new ( \[ARGS\] )

  Creates an `"IO::Socket::INET"` 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, `"IO::Socket::INET"` provides.

  ```
   PeerAddr    Remote host address          <hostname>[:<port>]
   PeerHost    Synonym for PeerAddr
   PeerPort    Remote port or service       <service>[(<no>)] | <no>
   LocalAddr   Local host bind address      hostname[:port]
   LocalHost   Synonym for LocalAddr
   LocalPort   Local host bind port         <service>[(<no>)] | <no>
   Proto       Protocol name (or number)    "tcp" | "udp" | ...
   Type        Socket type              SOCK_STREAM | SOCK_DGRAM | ...
   Listen      Queue size for listen
   ReuseAddr   Set SO_REUSEADDR before binding
   Reuse       Set SO_REUSEADDR before binding (deprecated,
                                                prefer ReuseAddr)
   ReusePort   Set SO_REUSEPORT before binding
   Broadcast   Set SO_BROADCAST before binding
   Timeout     Timeout value for various operations
   MultiHomed  Try all addresses for multi-homed hosts
   Blocking    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.  If the `"Listen"` argument is given, but false, the queue size will be set to 5.

  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.

  The `"PeerAddr"` can be a hostname or the IP-address on the "xx.xx.xx.xx" 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 ":".

  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.

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

  If `"Blocking"` is set to 0, the connection will be in nonblocking mode. If not specified it defaults to 1 (blocking mode).

  Examples:

  ```
     $sock = IO::Socket::INET->new(PeerAddr => 'www.perl.org',
                                   PeerPort => 'http(80)',
                                   Proto    => 'tcp');
     $sock = IO::Socket::INET->new(PeerAddr => 'localhost:smtp(25)');
     $sock = IO::Socket::INET->new(Listen    => 5,
                                   LocalAddr => 'localhost',
                                   LocalPort => 9000,
                                   Proto     => 'tcp');
     $sock = IO::Socket::INET->new('127.0.0.1:25');
     $sock = IO::Socket::INET->new(
                             PeerPort  => 9999,
                             PeerAddr  => inet_ntoa(INADDR_BROADCAST),
                             Proto     => 'udp',
                             LocalAddr => 'localhost',
                             Broadcast => 1 )
                         or die "Can't bind : $IO::Socket::errstr\n";
  ```

  If the constructor fails it will return `"undef"` and set the `$IO::Socket::errstr` package variable to contain an error message.

  ```
      $sock = IO::Socket::INET->new(...)
          or die "Cannot create socket - $IO::Socket::errstr\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::INET->new(...)
          or die "Cannot create socket - $@\n";
  ```

### METHODS

- sockaddr ()

  Return the address part of the sockaddr structure for the socket

- 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 xx.xx.xx.xx

- 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 xx.xx.xx.xx

## SEE ALSO

Socket, IO::Socket

## AUTHOR

Graham Barr. Currently maintained by the Perl Porters.  Please report all bugs at \<https://github.com/Perl/perl5/issues\>.

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