Leggere un socket

  • Creatore Discussione Creatore Discussione PHP
  • Data di inizio Data di inizio

PHP

Utente Attivo
9 Mag 2013
105
0
16
Salve, vorrei sapere una banalità: dopo aver creato il socket e averci scritto sopra con socket_write(che lo valorizza) come faccio a leggere il suo contenuto?
Nel sito php.net ho trovato una guida, ma non ha molti esempi su questo. Avrei pensato a due comandi possibili: socket_read e socket_recive.
Voi come fareste?
 
Questo è un esempio banale trovato su internet, mi segna un errore sul ciclo while: sapreste dirmi perchè?
PHP:
<?php
$fp = fsockopen("www.zend.com", 80, $errno, $errstr, 30);
if(!$fp){
die(!$errstr);
}

fputs($fp, "HEAD / HTTP/1.0\r\n\r\n")
while(!feof($fp)){
$line = fgets($fp, 2048);
echo $line;
}
fclose($fp);
?>
 
ho provato il tuo codice a quell'head a quel server e ti stampa questo:
Codice:
HTTP/1.0 400 Bad request Date: Fri, 28 Jun 2013 00:03:49 GMT Server: Apache Content-Type: text/plain Can't do transparent proxying without a Host: header.
controlla meglio il codice e sappimi dire ciao.
 
Ultima modifica:
Rispondo e poi vado a dormire, per stare a leggere le documentazioni sui socket ho fatto notte...
PHP:
$fp = fsockopen("www.zend.com", 80, $errno, $errstr, 30);
if(!$fp){
die(!$errstr);
}

fputs($fp, "HEAD /HTTP/1.0 \r\n\r\n");
while (!feof($fp)){
    $line = fgets($fp, 2048);
    echo $line;
}
fclose($fp);
In questo modo gli errori generati possono essere 2:

1)Bad Request
Your browser sent a request that this server could not understand.
Apache/2.2.3 (CentOS) Server at _default_ Port 80

2)Warning: fsockopen(): unable to connect to http://www.zend.com:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?) in C:.....

Gli errori dipendono dall'aggiungere o meno http:// a zend.com.
Il codice di prima aveva un ";" in meno e un pò di casino su fputs.
Prova e fammi sapere se capisci come usarlo. Puoi cambiare il sito naturalmente, quello era indicato nell'esempio su php.net.
 
Non posso più modificare il messaggio(per i moderatori).
Se metto:
PHP:
$fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
Mi ritrovo con il tuo stesso messaggio:
HTTP/1.0 400 Bad Request Content-Type: text/html; charset=UTF-8 Content-Length: 925 Date: Fri, 28 Jun 2013 01:33:37 GMT Server: GFE/2.0
E levando google e mettendo hotmail al suo posto:
PHP:
$fp = fsockopen("www.hotmail.com", 80, $errno, $errstr, 30);
la pagina rimane bianca.
Non sò quale possa essere l'errore, forse bisogna creare prima un socket da fargli leggere(magari è anche una questione di permessi).
Comunque domani ci provo.:byebye:
 

Discussioni simili