#!/usr/bin/env perl use strict; use warnings; use Socket qw(:all); use IO::Socket; use IO::Socket::INET; my $sock; my $tcpnodelay; print "\nUsing built-in method\n"; my $proto = getprotobyname ('tcp'); socket ($sock, PF_INET, SOCK_STREAM, $proto) or die "Socket: $! ($^E)"; $tcpnodelay = getsockopt ($sock, IPPROTO_TCP, TCP_NODELAY); $tcpnodelay = unpack 'I', $tcpnodelay; print "Before: tcpnodelay=$tcpnodelay\n"; setsockopt $sock, IPPROTO_TCP, TCP_NODELAY, 1 or die "setsockopt: $! ($^E)"; $tcpnodelay = getsockopt ($sock, IPPROTO_TCP, TCP_NODELAY); $tcpnodelay = unpack 'I', $tcpnodelay; print "After: tcpnodelay=$tcpnodelay\n"; print "\nUsing OO method\n"; $sock = IO::Socket::INET->new(Type => SOCK_STREAM, Proto =>'tcp') or die "new IO::Socket::INET: $! ($^E)"; $tcpnodelay = $sock->sockopt(TCP_NODELAY); print "Before: tcpnodelay=$tcpnodelay\n"; $sock->sockopt(TCP_NODELAY, 1) or die "\$sock->sockopt NODELAY, 1: $! ($^E)"; $tcpnodelay = $sock->sockopt(TCP_NODELAY); print "After: tcpnodelay=$tcpnodelay\n"; print "\n\n"; __END__