perl - socket

Post Reply
Message
Author
michael

perl - socket

#1 Post by michael »

halloele,

habe überhaupt keine ahnung von perl, muss aber...

wie realsiere ich es, dass ich zeilenweise von einem
socket einlese, und zwar so lannge, bis keine zeilen
mehr gesendet werden - einfach oder?
while(<$socket>) {print} - macht nicht, das was ich will,
da er solange die schleife durchläuft, bis der socket
geclosed wird. darauf kann ich nicht warten...

Jochen

Re: perl - socket

#2 Post by Jochen »

<blockquote><hr>wie realsiere ich es, dass ich zeilenweise von einem
socket einlese, und zwar so lannge, bis keine zeilen
mehr gesendet werden - einfach oder?<hr></blockquote>Nein, nicht wirklich einfach.

Wenn die Leitung zugemacht wird, ist eindeutig, dass nichts mehr kommt.

Wenn die Leitung immer noch steht, aber keine Daten kommen, kann das mehrere Ursachen haben:
<li>Die zu sendenden Daten müssen noch berechnet werden.
<li>Das Netz zwischen den Rechnern ist dicht.
<li>Der Server ist CPU-technisch ausgelastet, weswegen die Daten langsam geliefert werden.
<li>U.v.a.m. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Entweder bastelst Du Dir ein Protokoll, wo ein bestimmter Wert aussagt, dass ab jetz keine Daten mehr kommen - dann kannst Du aber auch direkt auf der Serverseite die Leitung einfach schliessen. Oder aber Du definierst schlicht und ergreifend, dass beispielsweise 3 Sek. ohne Daten das Ende der Übertragung bedeutet. Aber da kannst Du beliebige Probleme mit nicht vollständig übertragenen Daten kriegen. Für den zweiten Fall würde ich select empfehlen (2. Bedeutung in "man perlfunc", also "select RBITS,WBITS,EBITS,TIMEOUT"). Dazu findest Du aber auch unter Garantie einige Beispiele im Netz.

Jochen

miicha

Re: perl - socket

#3 Post by miicha »

dankke, habe ein eof definiert als markierung, das nix mehr kommt...

Post Reply