Bonjour,

Je cherche à transformé ma requete java en php.

Et j'ai une erreur dès que j'envoi la requête avec write_socket().
Voici mon code test:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
class Socket {
  	private $_id;
  	private $_socket;
  	private $_adresse;
  	private $_port;
  	private $_result;
  	private $_requete;
 
 
 
  	function CreateSocket(){
     	error_reporting(E_ALL);
      	echo "<h2>Connexion TCP/IP</h2>\n";
      	/* Crée un socket TCP/IP. */
		$this->_socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
		if ($this->_socket === false) {
    		echo "socket_create() a échoué : raison :  " . socket_strerror(socket_last_error()) . "\n";
		} else {
    		echo "OK.Création du socket\n";
		}
    }
 
  	function ConnectSocket(){
     	$_adresse="192.168.0.250";
      	$_port=5001;
    	$this->_result = socket_connect($_socket, $_adresse, $_port);
		if ($_socket === false) {
    		echo "socket_connect() a échoué : raison : ($_result) " . socket_strerror(socket_last_error($_socket)) . "\n";
		} else {
   			echo "OK Connection à ".$_adresse." et ".$_port.".\n";
		}
    }
 
 
  	function SendReq(){
    	echo "Envoi de la requête";
      	$_requete = "#00016A---0002DATR0;3E71\n";
      	//$byte_array = unpack('C*', $_requete);
      	//echo $byte_array;
		//var_dump($byte_array);
		if(!socket_write($_socket, $_requete, strlen($_requete))) {
          echo "socket_write() errror!\r\n";
        }
      	flush();
    }
 
 
  	function ReadReq(){
      	echo "Read...";
    	/*echo "Lire la réponse : \n\n";
		while ($out = socket_read($_socket, 2048)) {
    		echo "Reponse: ".$out;
		}*/
     	 $buf = socket_read($_socket, 2048, PHP_NORMAL_READ);
      	echo "test:". $buf;
    }
 
  	function CloseSocket(){
    	echo "Fermeture du socket...";
		socket_close($_socket);
    }
}
?>
<?php
require 'Socket.class.php';
 
$socket= new Socket;
 
$socket->CreateSocket();
$socket->ConnectSocket();
$socket->SendReq();
$socket->ReadReq();
$socket->CloseSocket();
?>
Le problème est que j'ai l'erreur socket_write() errror!\r\n
Je n'ai pas compris si il faut transformer le string en byte array avant de l'envoyer.

Edit> J'ai trouvé
La dernière fois que j'ai programmer en php c'était avec php4 et j'ai jamais créer de fichier class.
L'erreur se trouve uniquement dans la variable $socket, apparement, il fallait mettre $this->_socket à la place.
Vu que mon serveur n'affiche pas les erreurs php, j'ai trouvé l'erreur en installant apache pour des tests.

Désolé
Merci à vous.