Bonjour,
j'ai besoin de récupérer une chaîne de caractère depuis une autre machine.
Le serveur qui reçoit la chaîne est en C. La connexion fonctionne.
Le problème est que je récupère une chaîne en bouillie (des symboles illisibles, même pas forcément le bon nombre), quel que soit l'encodage que je donne à ma chaîne en PHP.
Voici le code C un peu abrégé.
Et voici ce qui se passe côté PHP :
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 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <netinet/in.h> #include <unistd.h> #include <sys/socket.h> int socket_d_ecoute, socket_de_service; pid_t pid; socklen_t namelen; struct sockaddr_in nom; int main() { socket_d_ecoute = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); /*...*/ bzero(&nom, sizeof(nom)); nom.sin_family=AF_INET; nom.sin_port = htons(5000); nom.sin_addr.s_addr = INADDR_ANY; bind(socket_d_ecoute, &nom, sizeof(nom); ilisten(socket_d_ecoute, 3); accept(socket_d_ecoute, &nom, &namelen); char params[4]; read(socket_d_ecoute, params, 4); printf("les paramètres %s", params); /* etc. etc. */ return 0; }
Et quand on exécute le code PHP, on obtient des caractères exotiques dans la console, et la chaîne qui doit être passée par le serveur à une application (fork et exec) est rejetée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php $adresse = '127.0.0.1'; $port = 5000; // j'ai essayé toutes sortes de choses comme : //$paquet=iconv("UTF-8", "ASCII", "abcd"); $paquet="abcd"; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($socket, $adresse, $port); socket_write($socket, $paquet,4); socket_close($socket); ?>
Si quelqu'un peut me donner une piste... Merci !
Partager