networking

TCP features

TCP features

После того, как @bay прочитал весь RFC по TCP, он опубликовал у себя очень интересные примеры, что TCP сокет может подсоединиться сам к себе, и что можно соединить два сокета без вызовов listen и accept.

Apr 6, 2013 · tswr
Select

Select

my $paddr = inet_aton($addr); croak "Cannot resolve '$addr'" if (!defined $paddr); socket SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp') or croak 'Cannot create socket'; connect SOCK, sockaddr_in($port, $paddr) or croak "Cannot connect to server '$server'"; send SOCK, "$query\r\n", 0; vec($rin, fileno(SOCK), 1) = 1; do { ($nfound) = select($rout = $rin, '', '', $timeout); croak 'Select() error' …

Feb 2, 2013 · tswr
Raw Sockets

Raw Sockets

sub sendRaw($$$) { use constant IPPROTO_RAW => 255; my ($destination, $dport, $packet) = @_; eval { socket(SOCKET, PF_INET, SOCK_RAW, IPPROTO_RAW); my $paddr = sockaddr_in($dport, inet_aton($destination)); send(SOCKET, $packet, 0, $paddr); }; if ($@) { print "Error occured: $@"; } } sub assembleRawUdp($$$$$) { my ($destination, $dport, $source, $sport, $data) = @_; ############# # IP HEADER # …

Feb 2, 2013 · tswr