Question

Je développe un programme qui envoie des images d'un ordinateur à un autre (similaire à l'assistance à distance sans entrée souris / clavier). Les deux ordinateurs que j'utiliser pour tester ce sont une machine Windows XP et un Windows Vista. J'ai la machine XP stationnaire directement connecté à un routeur et un ordinateur portable qui est connecté via sans fil.

La transmission de XP à Vista fonctionne très bien, je suis en mesure d'obtenir un flux constant d'images qui sont affichées sur Vista. Cependant, quand je feuillette et envoie des images de Vista à XP ne fonctionne pas. J'ai aussi essayé une « copie » locale, qui est, sans le réseau obtenir un flux d'images et cela fonctionne sur Vista ainsi que XP. Il est exactement le même programme sur les deux machines.

Je ne pense pas que cela importe, mais j'utilise GDI + pour les images. J'envoie donc un .jpg à travers un flux sur le réseau et le reconstruire de l'autre côté.

Mon réseau de la classe de message est appelé NetMsg. il se compose d'un char* type et un char* data. les types déterminent la façon dont j'interpréter les données, aucun problème ici.
Appelons les ordinateurs # 1 et # 2.
Lorsque la connexion est créée et j'ai marqué sur la zone # 1 que je veux envoyer:
001> # 1 envoie le type REDIMEN // pour obtenir la fenêtre # 2 de la même taille que la zone que j'ai marqué sur # 1
002> # 1 envoie PICTURE_DATA de type // ceci est la imageData réelle
003> # 2 après reçu les deux messages ci-dessus, envoie le type REQUEST_MORE // # 2 veut plus imageData
004> #go à l'étape 1

Je n'ai même pas pris la peine de le déboguer lors de l'envoi des données d'image de XP à Vista, car il fonctionne très bien, exactement comme je le veux. Toutefois, lorsque Vista envoie à XP, je l'ai remarqué ce qui suit:

  • Les données reçues peuvent effectivement être deux NetMsgs. Je reçois du soutien pour ce en divisant les données en plusieurs NetMsgs
  • Les données reçues peuvent être incomplètes, qui est que je dois attendre plus de données. Je reçois du soutien pour cela en marquant un NetMsg incomplet et sur la prochaine datatransmission compléter. (Ainsi que d'une combinaison de la première étape)

Ce presque fait le tour parce que je suis arrivé des images transférées correctement, mais il a soudainement cessé. Je ne l'ai pas bien ce débogué donc je ne sais pas pourquoi les données suddently ont cessé .. Cependant:

Ce que je ne comprends pas est que cela fonctionne très bien lors de l'envoi de XP à Vista, mais pas l'inverse. Qu'est-ce que je manque?

Ne laissez-moi savoir si vous avez besoin des extraits de code, cependant, il est assez énorme ... environ 500 lignes .. Sinon, je suis à la recherche sur les problèmes connus lors de l'envoi des données de Vista à XP.

Toute aide et / ou des commentaires appréciés!

Était-ce utile?

La solution 3

Il bloquait en fait sur les deux ordinateurs et les deux attendaient l'autre pour y répondre.

Autres conseils

Il est difficile de dire quoi que ce soit vraiment avec certitude. Cependant, je suggère fortement que vous écrivez une suite de tests pour votre programme et mettre en œuvre un test qui attrape ce problème particulier. Ce sera plus facile pour vous de reproduire l'échec, et il est souvent très instructif d'essayer de produire un test minimal qui peut démontrer le problème. En outre, lorsque vous avez un (entièrement automatique) cas de test, il est également plus facile de demander à quelqu'un d'autre de l'aide.

Ce que vous avez vraiment besoin de faire est de décrire le problème plus en détail. Il pourrait y avoir 100 de raisons pour lesquelles « il ne fonctionne pas ».

Vous obtenez des données par le biais?

Essayez d'envoyer quelques octets, ils font passer?

Si rien ne se fait par le biais, essayez d'utiliser Wireshark, est Vista envoie les données sur?

Est XP reçoit-il?

Pas de magie ici, vous devrez vérifier le chemin de données du début à la fin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top