Thread TCP Client - Socket lesen und schliessen (29 answers)
Opened by snarf at 2004-08-18 19:50

steffenw
 2004-08-20 23:13
#37529 #37529
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wenn Du Bytes sendest, bringt Dir send immer zurück, wie viele Bytes gesendet werden konnten. Im nonblocking-Modus können es auch 0 sein, sonst mindestens eins.

Du mußt Dir einen Ausgangspuffer aufbauen, in den Du die Bytes einträgst, die vom File kommen und dann die gesendeten Bytes vorn von diesem Puffer wieder abziehen.
Code: (dl )
1
2
3
4
5
6
my $outbuf = '';
while (read FileHandle, $buf, 28)
{ $outbuf .= $buf; # zum Senden anhängen
my $len = $socket->send($outbuf); # Sendeversuch - heißt, es muß nicht klappen
$len and substr $outbuf, 0, $len, ''; # vorn wieder abschneiden
}
Jetzt könnten noch Bytes in $outbuf sein, wenn diese nicht gesendet werden konnten. Entweder Du blockierst spätestens hier oder betrachtest das als Fehler.
$SIG{USER} = sub {love 'Perl' or die};

View full thread TCP Client - Socket lesen und schliessen