2010-11-20 16 views
0

Lorsque j'envoie, par exemple, "1234", le serveur, qui est C++ avec la bibliothèque SFML, lit "1234╠╠╠╠╤lσ╝╝√ = ♦ ↑ ע σ ". Lors de l'envoi d'un client CML SFML vers le serveur, tout est OK. Le client d'origine écrit en Onj-c avec la bibliothèque Async Socket. WTF? (Tout TCP)Problème de lecture des sockets filés - ajoute des caractères câblés au message

+3

Vous devez poster un code. Sans cela, nous ne serons pas vraiment en mesure d'aider. –

+0

Donc, votre question est "WTF?"? Et votre problème est "câblé"? Et vous dites que vous utilisez "Onj-c"? Publiez le code affecté et corrigez l'orthographe. – AndiDog

Répondre

0

Il semble que le serveur suppose que les données qu'il reçoit sont à zéro, mais l'un des clients envoie simplement "1234" au lieu de "1234 \ 0". Ainsi, les personnages étranges que vous voyez pourraient être les déchets trouvés dans cette partie de la mémoire du serveur.

Vous pouvez utiliser un outil tel que Wireshark pour voir exactement ce qui se passe sur le réseau et comment il diffère entre les deux clients.

+0

Merci pour ça! Je vais utiliser ça. –

2

Je ne suis pas sûr que cela vous aidera, mais je suggère d'envoyer quelque chose comme ça "1234 \ 0".

+0

vous avez raison. oublie ça. –

0

Une implémentation naïve dans SFML suppose en effet un champ à terminaison nulle - et vous montrera son tampon brut. Ce qui en effet ne se termine pas. Soit mettre fin à la chaîne expéditrice avec \ 0 ou bien envoyer quelque chose comme 12345 - et changer l'impression pour mettre un \ 0 à [len] - ou similaire.

0

obtenir la chaîne de votre lib ainsi que la longueur des données et ajouter \ 0 à [len]