webForumDet fria alternativet

Fråga om sockets och POP3

PHP

4 svar · 250 visningar · startad av andreaswebb

Medlem sedan apr. 2003101 inlägg
Frågan#1

Hej!

Första omgången med sockets för mig. Jag försöker bara på skojj kommunicera med en POP3-server.

<?php
$server = fsockopen('localhost', 110);

define ('SOCKET', $server);

$fas = 1;
while(SOCKET){
	echo(fgets(SOCKET, 4096));
	
	if($fas == 1) {
		fputs(SOCKET, 'USER andreas', 512);
		$fas++;
	} else if ($fas == 2) {
		fputs(SOCKET, 'PASS hej', 512);
	}
		
}

?>

När jag kör filen genom php-cgi.exe så får jag bara upp serverns välkomsmeddelande, sen är det stopp. Jag har studerat lite andra skript, och tycker att de är konstruerade på liknande sätt. Någon som kan ge lite tips om på vad som kan vara tokigt.

Tacksam för svar!

Medlem sedan juni 20034 013 inlägg
#2

512 ser lite konstigt ut. Där borde det väl stå längden på den sträng du skickar? Och så ska det vara ny-rad efter varje kommando.

Medlem sedan apr. 2003101 inlägg
#3

Det gör ingen skillnad vad jag än sätter istället för 512. Jag testar att sätta \r\n framför strängen jag skickar, men det hjälper inte. Tror inte att de har någonting med saken att göra. Men det var bra tankar. Jag gjorde lite undersökningar för att kolla var scriptet stannar. Jag kan skicka det första kommandot, men det är när scriptet försöker skriva ut resultatet en andra gång som det slutar, det verkar som om while(SOCKET) slutar att gälla.

Medlem sedan juni 20034 013 inlägg
#4

andreaswebb skrev:

Men det var bra tankar.

:-)

Jag har skrivit en del klienter och servrar som snackar POP3, bland annat Poputil: http://www.tydal.nu/article/90

Du måste ha ny-rad =efter= varje kommando (inte före). För att \r\n ska utläsas som CRLF i Php måste du ha det inom citationstecken (inte apostrofer).

fwrite(SOCKET, "USER andreas\r\n");
fwrite(SOCKET, "PASS hej\r\n");

Och sen bör du väl göra något när du kommer in. STAT t.ex, och sedan QUIT. Nu kommer den ju bara att skicka "PASS hej" i all oändlighet...

Medlem sedan apr. 2003101 inlägg
#5

Nu funkar det kanon! Tack ska du ha..:)

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)