Hi
I have 2 simple scripts to send short files from a
win2k box to HP unix box ( for learning purposes only). They work fine,
but I am looking for ideas on why the client (win2k) needs a sleep statement after each
line write. If I leave it out, I get a "Connection reset by peer" on the receiving end(unix)
Thanks and the relative code is below:
# Server (Receiver on Unix end)
if ($pid = fork) { # parent
close(C);
waitpid( -1, &WNOHANG );
next; # ready for another client
} else {
# child
die "can't fork: $!" unless defined $pid;
close(S);
print C "Connected to $ip:$port ";
# get file name
sysread(C, $fname, 128) or die "couldn't read: $!\n&
+quot;;
$fname =~ s/\n//;
print "recieving file: $fname\n";
while ( sysread(C, $buf, 128) ) {
$msg .= $buf;
}
open (F, ">$fname") or die "couldn't ope
+n it: $!";
# open a new file with the file name and write to it
print F $msg;
close F;
print "Recieved file\n";
exit;
}
------
# client (win2k sender)
socket(SOCK,AF_INET,SOCK_STREAM,$proto) || die "$0:Cannot open so
+cket\n";
connect(SOCK, $remote) or die "can't connect: $!\n";
# send filename to server
print "sending file $fname\n";
$bytes = syswrite(SOCK, $fname, length($fname));
sleep 1;
open(F, "<$fname") or die "coundn't open: $!";
@buf = <F>;
foreach $line (@buf) {
# why do we need to sleep ?
syswrite(SOCK, $line, length($line)) or die "can't write: $
+!";
sleep 1;
}
close F;
editted by jeffa - s/pre/code/g