```{index} single: pack_sockaddr_in; Socket function ``` ```{index} single: Socket::pack_sockaddr_in; Perl function ``` # pack_sockaddr_in Build a packed `sockaddr_in` from a port number and a 4-byte IPv4 address, ready to hand to `bind` or `connect`. ## Synopsis ```perl my $sin = pack_sockaddr_in($port, $packed_ipv4); ``` ## What you get back A fixed-size byte string whose layout matches the platform's `struct sockaddr_in`: address family (`AF_INET`), port in network byte order, the raw 4 address bytes, and trailing padding. The result is opaque from Perl's perspective — treat it as a cookie for the socket built-ins. ## Examples ```perl my $addr = pack_sockaddr_in(80, inet_aton("example.com")); connect($sock, $addr) or die $!; ``` ```perl ## Bind to every local interface on a chosen port. bind($sock, pack_sockaddr_in(8080, INADDR_ANY)) or die $!; ``` ## Edge cases - Port is truncated to 16 bits; values above 65535 wrap silently. - An address string shorter than 4 bytes leaves the address field zeroed (i.e. `0.0.0.0`). - The address argument is a **packed** 4-byte string, not a dotted-quad literal. Pass `inet_aton(...)` or `INADDR_*`. ## Differences from upstream Fully compatible with upstream Socket. ## See also - `unpack_sockaddr_in` — reverse direction. - `sockaddr_in` — dual-mode shortcut that dispatches on arg count. - `pack_sockaddr_in6` — IPv6 counterpart. - `inet_aton` — usual source of the address argument.