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...
perl - socket
Re: perl - socket
<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
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