[php]

Fermé
salim81 Messages postés 19 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 26 juin 2007 - 1 juin 2006 à 15:30
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 - 1 juin 2006 à 17:31
bonjour a tous!
bon j'ai réalisé une socket client php qui envoi un "BEGIN" et une socket serveur java qui reçoi le message et repond par "END".mon probleme lors de l'execution du socket client :
- je reçoi un affichage comme ci-dessous:
connexion OK.
Envoi de la requête.OK.
Lire la réponse : END END END END END
Fatal error: Maximum execution time of 30 seconds exceeded in ....

mon code source est:
client.php
<?php
$fp = fsockopen("localhost",4000, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else
{
echo "connexion OK.<br>";
}

$in = "BEGIN\r\n\r\n";
$in .= "Host: localhost\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';

echo "Envoi de la requête.";
fwrite($fp, $in, strlen($in));
echo "OK.<br>";

echo "Lire la réponse : ";
while ($out = fgets($fp, 2048)) {
echo $out;
}

echo "Fermeture de la socket...";
fclose($fp);
echo "OK.<br>";
?>

serveur.java

package test;
import java.io.*;
import java.net.*;

public class Serveur {
static final int port = 4000;

public static void main(String[] args) throws Exception {
ServerSocket s = new ServerSocket(port);
Socket soc = s.accept();

// Un BufferedReader permet de lire par ligne.
BufferedReader plec = new BufferedReader(
new InputStreamReader(soc.getInputStream())
);

// Un PrintWriter possède toutes les opérations print classiques.
// En mode auto-flush, le tampon est vidé (flush) à l'appel de println.
PrintWriter pred = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(soc.getOutputStream())),
true);

while (true) {
String str = plec.readLine();
String endTask="END"; // lecture du message
if (str.equals("BEGIN"))
System.out.println("ECHO = " + str); // trace locale
pred.println(endTask); // renvoi d'un écho
}
}
}
je sais pas comment resoudre le probleme.
svp si quelqu'un a une idee merci de me donner un indication!
cordialement!
A voir également:

1 réponse

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
1 juin 2006 à 17:31
Salut,
Perso j'ustiliserai socket_read() et socket_write() pour manipuler la socket
en PHP.
En second lieu, tu attends qu'un seul message de réponse, donc je ne vois
pas pour quelle raison tu optes pour while pour lire la socket.

A+, crabs
0