2011-04-27 5 views
1

J'ai l'application serveur et client en Java, ce qui fonctionne avec ce serveur. À première vue, ce n'est pas un problème - JAVA utilise socket.getInputStream() pour recevoir des données et socket.getOutputStream() pour envoyer des données.Socket PHP se bloque sur les fuels

Je dois écrire le même client sur PHP. Tous les exemples de manuels ne m'ont pas aidé. Je peux me connecter avec succès au serveur, mais quand j'essaye de lire quelque chose - la page se bloque. Par exemple:

$fp = stream_socket_client($addr, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    fwrite($fp, $data); 
    while (!feof($fp)) { 
     var_dump(fgets($fp, 1024)); 
    } 
    fclose($fp); 
} 

Ce code se bloque même sans.

Qu'est-ce qui ne va pas?

Répondre

0

Votre serveur envoie-t-il vraiment des octets?

fgets($fp, 1024) 

retours, si l'une de ces conditions Happens:

- EOF ou reçu de nouvelle ligne

- 1024-1 octets lus

ou l'autre côté fermé la connexion.

Si ces conditions ne se produisent pas, l'appel est bloqué.

Que diriez-vous de passer de 1024 à un nombre inférieur ou d'utiliser fgetc()?