Вопрос

Я разрабатываю программу, которая отправляет изображения с одного компьютера на другой (аналогично удаленной помощи без ввода с мыши / клавиатуры).Два компьютера, которые я использую для тестирования этого, - это одна машина с Windows XP и одна с Windows Vista.У меня есть стационарный компьютер XP, напрямую подключенный к маршрутизатору, и ноутбук, который подключен по беспроводной сети.

Передача с XP на Vista работает отлично, я могу получать постоянный поток изображений, которые отображаются в Vista.Однако, когда я переворачиваю его и отправляю изображения из Vista в XP, это не работает.Я также попробовал локальную "копию", то есть без подключения к сети получить поток изображений, и это работает как в Vista, так и в XP.Это одна и та же программа на обеих машинах.

Я не думаю, что это имеет значение, но я использую GDI + для изображений.Поэтому я отправляю файл .jpg через поток в сети и перестраиваю его на другой стороне.

Мой класс сетевых сообщений называется NetMsg.он состоит из char* type и a char* data.типы определяют, как я интерпретирую данные, здесь проблем нет.
Давайте назовем компьютеры № 1 и №2.
Когда соединение создано, и я пометил область на # 1, которую я хочу отправить:
001># 1 отправляет тип RESIZE //, чтобы окно на # 2 имело тот же размер, что и область, которую я отметил на # 1
002>#1 отправляет тип PICTURE_DATA // это фактические imagedata
003>#2 после получения двух вышеуказанных сообщений отправляет тип REQUEST_MORE // #2 хочет больше imagedata
004>#переходим к шагу 1

Я даже не потрудился отладить его при отправке данных изображения из XP в Vista, поскольку он отлично работает, именно так, как я хочу.Однако, когда Vista отправляет на XP, я заметил следующее:

  • Полученных данных на самом деле может быть два NetMsgs.У меня есть поддержка для этого, разделив данные на несколько NetMsgs
  • Полученные данные могут быть неполными, то есть мне придется ждать дополнительных данных.Я поддерживаю это, отмечая NetMsg как неполный и при следующей передаче данных завершите его.(а также комбинация первого шага)

Это почти сделало свое дело, потому что я получил правильную передачу некоторых изображений, однако затем это внезапно прекратилось.Я не отлаживал это тщательно, поэтому я не знаю, почему данные внезапно прекратились..Однако:

Чего я не понимаю, так это того, что это отлично работает при отправке с XP на Vista, но не наоборот.Что я упускаю из виду?

Пожалуйста, дайте мне знать, если вам понадобятся выдержки из кода, однако он довольно огромен...примерно 500 строк..В противном случае я ищу известные проблемы при отправке данных из Vista в XP.

Любая помощь и / или обратная связь приветствуются!

Это было полезно?

Решение 3

На самом деле это была блокировка на обоих компьютерах, и оба ждали ответа другого.

Другие советы

Трудно действительно сказать что-либо с какой-либо уверенностью.Однако я бы настоятельно рекомендовал вам написать набор тестов для вашей программы и реализовать тестовый пример, который выявляет эту конкретную проблему.Это облегчит вам воспроизведение сбоя, и часто бывает очень поучительно попытаться создать минимальный тестовый пример, который может продемонстрировать проблему.Кроме того, когда у вас есть (полностью автоматический) тестовый пример, вам также легче обратиться к кому-то другому за помощью.

Что вам действительно нужно сделать, так это описать проблему более подробно.Может быть 100 причин, почему "это не работает".

Получаете ли вы через него какие-либо данные?

Попробуйте отправить всего несколько байтов, они дойдут?

Если ничего не проходит, попробуйте использовать Wireshark, отправляет ли Vista данные?

Получает ли XP это?

Здесь нет никакой магии, вам придется проверить путь к данным от начала до конца.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top