Je ne sais pas si je m'adresse à la bonne liste mais j'ai un problème
qui concerne entre autre python.
Je développe pour un petit projet personnel un serveur en python.
J'utilise pour cela les sockets. Les clients sont développé en C et sont
déstinés à tourner sur des machines windows tandis que le serveur tourne
sur linux.
Mon problème est que dans mon client lorsque je fais un recv() pour lire
ce que transmet le serveur (avec send()) j'ai l'impréssion qu'il ne
trouve pas le caractere NULL signifiant la fin de la chaine de caractère
car il affiche l'ensemble de mon buffer (des caractères aléatoires).
De plus lorsque j'utilise send() (toujours dans le serveur) pour envoyer
une chaine de caractere, mon client reçoit celle ci découpée.
Je ne sais pas si j'ai étais assez clair. Si quelqu'un peut m'aider je
lui en serait reconnaissant :)
J'ai trouvé mon erreur. Elle venait de mon client Windows, désolé.
Michel Claveau
Bonjour !
Tant mieux, que tu ait trouvé.
Néanmoins, je pense qu'il faut rappeler que le caractère zéro, pour terminer une chaîne, si c'est une façon de faire très souvent utilisée en C, ne correspond pas à la façon dont Python traite les chaînes.
En Python, la taille est connue par le langage, et non terminée par un chr(0). Une chaîne peut d'ailleurs contenir des chr(0).
Donc, pour un serveur TCP/IP, si le chr(0) est nécessaire, doit être envoyé explicitement. Mais, alors, il faudra penser au cas des chaînes contenant effectivement des chr(0)... par exemple, une image contenant du noir.
Quand au découpage, il peut venir du découpage des trames, dans TCP/IP
@+
Michel Claveau
-- @-salutations
Michel Claveau
Bonjour !
Tant mieux, que tu ait trouvé.
Néanmoins, je pense qu'il faut rappeler que le caractère zéro, pour
terminer une chaîne, si c'est une façon de faire très souvent utilisée
en C, ne correspond pas à la façon dont Python traite les chaînes.
En Python, la taille est connue par le langage, et non terminée par un
chr(0). Une chaîne peut d'ailleurs contenir des chr(0).
Donc, pour un serveur TCP/IP, si le chr(0) est nécessaire, doit être
envoyé explicitement.
Mais, alors, il faudra penser au cas des chaînes contenant
effectivement des chr(0)... par exemple, une image contenant du noir.
Quand au découpage, il peut venir du découpage des trames, dans TCP/IP
Néanmoins, je pense qu'il faut rappeler que le caractère zéro, pour terminer une chaîne, si c'est une façon de faire très souvent utilisée en C, ne correspond pas à la façon dont Python traite les chaînes.
En Python, la taille est connue par le langage, et non terminée par un chr(0). Une chaîne peut d'ailleurs contenir des chr(0).
Donc, pour un serveur TCP/IP, si le chr(0) est nécessaire, doit être envoyé explicitement. Mais, alors, il faudra penser au cas des chaînes contenant effectivement des chr(0)... par exemple, une image contenant du noir.
Quand au découpage, il peut venir du découpage des trames, dans TCP/IP