J'ai écrit un seul programme client-serveur et je voudrais demander: Y at-il une différence de comportement entre les systèmes d'exploitation 32 et 64 bits de la fonction recv()? .Recv() Différences de comportement entre les systèmes d'exploitation 32 et 64 bits
Je pose cette question parce que je cours à la fois le serveur et le client sur un ordinateur portable 64 bits et tout fonctionne bien. J'appelle recv() de cette façon: while((tmp = recv(client_sock,rec_msg,256,0))>0)
et comme prévu si par exemple j'ai 3 chaînes à envoyer du client, dans la partie serveur il entre dans le temps 3 et imprime le bon résultat. Lorsque j'exécute exactement les mêmes programmes sur une machine Debian 32 bits, il semble que pour une raison inconnue, si j'envoie 3 chaînes par exemple du client, elle n'entre qu'une seule fois dans la boucle while de la partie serveur et reçoit les 3 chaînes comme un. J'ai utilisé des instructions d'impression et découvert qu'il entre dans la boucle while une fois et reçoit tout le tampon bien que dans la partie client alors que la boucle est entrée 3 fois comme prévu et 3 chaînes sont envoyées dans 3 fois différentes. Je ne peux pas trouver une raison logique pour laquelle cela fonctionne bien sur 64 bits et ne fonctionne pas en 32 bits et c'est pourquoi je pose cette question.
Merci d'avance pour votre temps et votre aide.
Utilisez-vous le même système d'exploitation pour les versions 32 bits et 64 bits? Il ne peut pas nécessairement être une différence dans l'architecture du processeur, mais peut-être une gestion de l'OS/pilote de l'appel système? –
Merci pour la réponse.Non, j'utilise différents OS ... Mint dans le premier cas et Debian dans le second.Mais je ne pense pas que cela provoque la différence.Les raisons de cette différence (limites non maintenues), sont probablement ceux expliqués dans la réponse ci-dessous. – SpyrosR