Я разрабатываю программу, которая отправляет изображения с одного компьютера на другой (аналогично удаленной помощи без ввода с клавиатуры или мыши). Два компьютера, которые я использую для тестирования, - это один компьютер с Windows XP и один Windows Vista. У меня есть стационарная машина XP, напрямую подключенная к маршрутизатору, и ноутбук, подключенный через беспроводную сеть.
Передача из XP в Vista работает отлично, я могу получать постоянный поток изображений, которые отображаются в Vista. Однако, когда я переворачиваю его и отправляю изображения из Vista в XP, это не работает. Я также попробовал локальное «копирование», то есть без сети получить поток изображений, и это работает как в Vista, так и в XP. Это одна и та же программа на обеих машинах.
Не думаю, что это имеет значение, но я использую GDI + для изображений. Поэтому я посылаю .jpg через поток в сети и перестраиваю его на другой стороне.
Мой класс сетевых сообщений называется NetMsg
. он состоит из char* type
и char* data
. типы определяют, как я интерпретирую данные, здесь нет проблем.
Давайте назовем компьютеры № 1 и № 2.
Когда соединение установлено, и я пометил область на # 1, которую я хочу отправить:
001> # 1 отправляет тип RESIZE //, чтобы получить окно размером # 2 того же размера, что и область, которую я отметил на # 1
002> # 1 отправляет тип PICTURE_DATA // это фактические изображения
003> # 2 после получения двух вышеупомянутых сообщений отправляет тип REQUEST_MORE // # 2 хочет больше imagedata
004> # перейти к шагу 1
Я даже не удосужился отладить его при отправке данных изображений из XP в Vista, поскольку он отлично работает, именно так, как я этого хочу. Однако, когда Vista отправляет XP, я заметил следующее:
- Полученных данных на самом деле может быть два
NetMsgs
. У меня есть поддержка для этого, разделив данные на несколько NetMsgs
- Полученные данные могут быть неполными, то есть мне придется ждать больше данных. Я поддерживаю это, помечая
NetMsg
как неполное и на следующей передаче данных завершите его. (а также комбинация первого шага)
Это почти сработало, потому что некоторые изображения были переданы правильно, но затем они внезапно остановились. Я не отладил это полностью, поэтому я не знаю, почему данные внезапно остановились .. Однако:
Что я не понимаю, так это то, что это прекрасно работает при отправке с XP на Vista, но не наоборот. Чего мне не хватает?
Дайте мне знать, если вам нужны фрагменты кода, однако он довольно большой ... примерно 500 строк. В противном случае я ищу известные проблемы при отправке данных из Vista в XP.
Любая помощь и / или отзывы приветствуются!