Loop wil niet stoppen?
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.
Maar na de eerste loop moet ie stoppen, ik heb nog geen verdere commands verzonden.
Dit is de while loop:
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?
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
+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)
1
2
3
4
5
6
7
8
9
10
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;
}
?>
# 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?
Gesponsorde koppelingen:
Code (php)
1
2
3
4
5
6
7
8
9
10
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;
}
?>
# 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
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 ...
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
Als je nu eens onderin je loop dit zet:
Ben je ook klaar
Je zou ook die socket_recv eens in een functie kunnen zetten die alleen een boolean terug geeft.
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
Het probleem is dat hij hetgeen wat jij wil ook al niet pakt in de while condities, die hetzelfde werkt als 'n if.
Snappie?
Snappie?
ok, laatste poging
3e reactie:
http://nl2.php.net/manual/nl/function.socket-recv.php
Daar zit die functie ook in een while
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
while( $this->bContinue && (boolean)socket_recv( $this->rSocket, $this->sBuffer, 512, 0 ) ){
...
}
?>
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)
1
2
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 ;)
I hope this will save some of somebody's hair ;)
Gewijzigd op 24/05/2005 20:18:00 door Martijn B
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.
.
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.



