Avatar billede andy Nybegynder
30. marts 2003 - 16:26 Der er 13 kommentarer og
1 løsning

fsockopen

$fp = fsockopen("$ip", $port, $errnr, $errstr, 10);
if (!$fp) {  echo "ERROR: $errstr<br>"; }
else {
    fputs ($fp, "GET / HTTP/1.0\r\nHost: $ip\r\n\r\n");
    echo fgets($fp, 2048) . "<br>";
    fclose($fp);
}

Hvordan kan jeg GET'e den samme side igen uden at connecte til $ip med fsockopen igen?
Avatar billede fangel Nybegynder
30. marts 2003 - 17:25 #1
fjern fclose... ;)
Avatar billede andy Nybegynder
30. marts 2003 - 18:36 #2
nope, kan du ikke
Avatar billede fangel Nybegynder
30. marts 2003 - 18:48 #3
f(sock)open når du vil åbne... fclose når du vil lukke forbindelsen igen...

Morten
Avatar billede andy Nybegynder
30. marts 2003 - 19:44 #4
$fp = fsockopen("$ip", $port, $errnr, $errstr, 10);
if (!$fp) {  echo "ERROR: $errstr<br>"; }
else {
    fputs ($fp, "GET / HTTP/1.0\r\nHost: $ip\r\n\r\n");
    echo fgets($fp, 2048) . "<br>";
    fputs ($fp, "GET / HTTP/1.0\r\nHost: $ip\r\n\r\n");
    echo fgets($fp, 2048) . "<br>";
}

er det det du mener? Hvis det er så prøv det lige. Det virker ikke
Avatar billede fangel Nybegynder
30. marts 2003 - 20:04 #5
$fp = fsockopen($ip, $port, $errnr, $errstr, 10);
if (!$fp) {  echo "ERROR: $errstr<br>"; }
else {
    fputs ($fp, "GET / HTTP/1.0\r\nHost: $ip\r\n\r\n");
    echo fgets($fp, 2048) . "<br>";
    fputs ($fp, "GET / HTTP/1.0\r\nHost: $ip\r\n\r\n");
    echo fgets($fp, 2048) . "<br>";
    fclose($fp);
}

denne kode åbner en forbindelse $ip, og sender 
---
GET / HTTP/1.0

Host: $ip

---
til serveren 2 gange, og læser serverens ouptput begge gange, hvorefter den lukker forbindelsen igen... hvad er det du vil, og hvorfor virker det ik?

Morten
Avatar billede andy Nybegynder
30. marts 2003 - 20:46 #6
Har du testet det?
Min nøjagtige kode er:
$fp = fsockopen ($ip, 80, $errno, $errstr, 30);
if (!$fp) { echo "$errstr ($errno)<br>\n"; }
else {
    fputs ($fp, "HEAD / HTTP/1.0\r\nHost: $ip\r\n\r\n");
    while (!feof($fp)) {
        echo fgets ($fp,128);
    }
    echo "<br><br>";
    fputs ($fp, "HEAD out.php HTTP/1.0\r\nHost: $ip\r\n\r\n");
    while (!feof($fp)) {
        echo fgets ($fp,128);
    }
    fclose ($fp);
}

Jeg får kun én header udskrevet.
Avatar billede fangel Nybegynder
30. marts 2003 - 20:52 #7
kender ikke så meget til HTML requests... ;) så jeg ved ikke om det er derfor...

Morten
Avatar billede andy Nybegynder
30. marts 2003 - 21:24 #8
HTML? HUH?
Avatar billede xyborx Nybegynder
31. marts 2003 - 08:29 #9
dea_pg> Ikke HTML, men HTTP requests ;)
andy> Jeg kunne forestile mig at begrænsningen ligger i serveren. Det er ikke alle servere der understøtter at man laver flere requests over den samme forbindelse. Prøv med 'Connection: Keep-Alive' i request'en, og 'Connection: Close' ved den sidste request du sender. Standarden burde ellers være Connection: Keep-Alive i HTTP 1.1..
Avatar billede xyborx Nybegynder
31. marts 2003 - 08:31 #10
Du kan evt. checke om serveren returnerer 'Connection: Close' uanset hvad du angiver. Det vil være et tydeligt tegn på at den ikke understøtter/accepterer flere requests.
Avatar billede andy Nybegynder
31. marts 2003 - 11:14 #11
Dude, det er helt kanon. Testede med Connection: Keep-Alive og flyttede lidt rundt på fputs(), nu kører det bare!

TAK! :)
Avatar billede andy Nybegynder
31. marts 2003 - 11:15 #12
smid lige et svar xyborx!
Avatar billede xyborx Nybegynder
31. marts 2003 - 12:46 #13
Du kan læse alt om HTTP-standarden her..
http://www.google.com/search?q=rfc+http+1%2E1
Der er læsestof nok til et par dage.. eller uger.. :D
Avatar billede fangel Nybegynder
31. marts 2003 - 14:44 #14
dog... mente selvfølgelig HTTP... (tror jeg bliver skør af alle disse forkortelser... ISS/IIS... HTML/HTTP (jaja, minder ik nær så meget om hinanden))

Morten
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester