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:
Le problème est que j'ai l'erreur socket_write() errror!\r\n
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(); ?>
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.
Partager