Je me permets de vous déranger je suis entrain de travailler sur un code type serveur/client. Les données que j'envoie a l'un comme a l'autre son dumps avec pickle.
Lors que je lance le code serveur sur mon pc windows tous ce passe correctement. Lors que j'exécute le code serveur sur mon raspberry avec Ubuntu serveur comme os. Je tombe en pickle tronqué et suis obligé de beaucoup augmenter la taille de réponse des sockets ce qui rend mon code hyper long.
Bien sûr le code exécuté et le même d'un côté comme de l'autre les objets envoyés sont les même également il n'y a 0 différence de code.
Ma question est la suivante est-ce que les informations envoyées par socket sont différentes d'une machine a l'autre ou d'un os a l'autre ?
Un pickle tronqué, c'est en général, parti dans l'idée que lorsqu'on fait send d'une séquence de bytes d'un côté, on devait recevoir la même séquence de bytes l'autre côté.... on constate que ce n'est pas le cas! En effet, TCP/IP ne garantit que la récupération des bytes dans l'ordre où il ont été expédié mais si on expédie 100 bytes on peut très bien récupérer 40 bytes puis 60 bytes...
Sauf à avoir codé une notion de "message" qui permet de détecter le début de.... et d'en attendre la fin avant d'en exploiter le contenu.
Les sockets n'ont rien à voir avec Python: on a le même problème avec tous les langages qui utilisent cette fonctionnalité système/réseau.
Si je comprends bien ta réponse avant de pouvoir utilisé pickle pour récupéré mes données il faut que je m'arrange pour boucler jusqu'à être sur de bien avoir tous les bytes de la réponse ?
Je suppose que socket ne le gère pas d'office et qu'il faut s'arranger pour trouver la fin de la réponses du serveur ?
Le Tout est souvent plus grand que la somme de ses parties.