#!/usr/bin/perl -w use IO::Socket; use strict; unless (@ARGV >= 3) { die "usage: $0 server port file(s)\n"; } my ($server, $port, @file_list) = @ARGV; my ($buffersize, $buffer, $data, $file, $connection) = (1024); if ($file_list[0] eq '*') { @file_list = get_file_list('.'); } foreach $file (@file_list) { my $size = (stat($file))[7]; my $retry_count = 0; open(FILE, $file); binmode FILE; until ($connection = IO::Socket::INET->new(Proto => "tcp", PeerAddr => $server, PeerPort => $port) || (++$retry_count) > 30 +) { } $connection->autoflush(1); print STDERR "[Connected to $server:$port]\n"; print $connection "[FILENAME: \"_$file\"]\012"; print $connection "[SIZE: \"$size\"]\012"; while (read(FILE, $data, $buffersize)) { print $connection $data; } close(FILE); sleep(1); } sub get_file_list { my ($dir) = @_; my ($file, @file_list); opendir(DIR,$dir) || die "cannot open directory: $!"; readdir(DIR); readdir(DIR); while (defined( $file = readdir(DIR) )) { push(@file_list, $file); } return @file_list; }
In reply to Client for custom file server by Aighearach
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |