Versio

Loop wil niet stoppen?

Overzicht Reageren

Mitch

Mitch

24/05/2005 19:07:00
Quote Anchor link
Ik zit op het moment wat te prutsen met POP3.
Ik heb met behulp van sockets een connectie geopend,
en krijg netjes te zien wat ik wil zien.
Quote:
Connected to pop3.tiscali.nl (195.241.76.56:110)...
+OK Tiscali POP server (v.3.1.0) started

Maar na de eerste loop moet ie stoppen, ik heb nog geen verdere commands verzonden.
Dit is de while loop:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
# Read from the socket as long as there is data and the continue boolean is set to true
while( socket_recv( $this->rSocket, $this->sBuffer, 512, 0 ) && ( $this->bContinue ) )
{

    # Show buffers contents
    echo $this->sBuffer . "\n";
    
    $this->bContinue = false;
}

?>


Zoals je ziet gaat bConinue op false, dat zou de loop moeten stoppen, maar dat gebeurt dus niet.
Wat dan zou ie moeten disconnecten en dat aangeven.
Ik heb ook al ( $this->bContinue == true ) geprobeerd maar dat werkte ook niet.
Wat zou het kunnen zijn?
 
PHP hulp

PHP hulp

25/05/2012 08:29:03
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Martijn B

Martijn B

24/05/2005 19:27:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
# Read from the socket as long as there is data and the continue boolean is set to true
while( socket_recv( $this->rSocket, $this->sBuffer, 512, 0 ) && ( $this->bContinue ) )
{

    # Show buffers contents
    echo $this->sBuffer . "\n";
    
    break;
}

?>


ghehe ;D

Raar probleem idd, op de een of andere manier blijft je voorwaarde steeds waar dus. Als je de voorwaarde nu eens omkeerd dus eerst bContinue en dan dat andere.
Gewijzigd op 24/05/2005 19:30:00 door Martijn B
 
Mitch

Mitch

24/05/2005 19:30:00
Quote Anchor link
Zo stopt ie altijd na 1x ;)
Die variabele is om dat te 'contoleren'.

Ik snap dus niet hoe 'ie' kan blijven loopen terwijl 1 v/d 2 condities false is ...
Gewijzigd op 24/05/2005 19:31:00 door Mitch
 
Martijn B

Martijn B

24/05/2005 19:40:00
Quote Anchor link
Als je nu eens onderin je loop dit zet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if( !$this->bContinue )
  break;
?>


Ben je ook klaar

Je zou ook die socket_recv eens in een functie kunnen zetten die alleen een boolean terug geeft.
Gewijzigd op 24/05/2005 19:42:00 door Martijn B
 
Mitch

Mitch

24/05/2005 19:41:00
Quote Anchor link
Het probleem is dat hij hetgeen wat jij wil ook al niet pakt in de while condities, die hetzelfde werkt als 'n if.

Snappie?
 
Martijn B

Martijn B

24/05/2005 20:09:00
Quote Anchor link
ok, laatste poging

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

while( $this->bContinue && (boolean)socket_recv( $this->rSocket, $this->sBuffer, 512, 0 ) ){
...
}


?>


3e reactie:
http://nl2.php.net/manual/nl/function.socket-recv.php

Daar zit die functie ook in een while

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
The solution was simple, but quite hard to find because socket_recv is not documented. socket_recv returns FALSE if there is no data and 0 if the socket is widowed (disconnected by remote side). So I had just to check return value of socket_recv. The problem now sounds stupid, but I've spend some time to find it out.
I hope this will save some of somebody's hair ;)
Gewijzigd op 24/05/2005 20:18:00 door Martijn B
 
Mitch

Mitch

25/05/2005 10:51:00
Quote Anchor link
Edit: Gelukt :D
Zie GoT.
Gewijzigd op 25/05/2005 11:38:00 door Mitch
 
- SanThe -

- SanThe -

25/05/2005 11:37:00
Quote Anchor link
Waarschijnlijk staat de pop3 server te wachten op input door de client (naam, password enz.) en houdt dus de connectie vast
.
Doe maar eens telnet pop3.tiscali.nl 110.
Je krijgt dan:
Connected to pop3.tiscali.nl.
Escape character is '^]'.
+OK Tiscali POP server (v.3.1.0) started

Dan staat de server te wachten op input
Typ quit en de connectie wordt verbroken.
 



Overzicht Reageren