0

我正在开发一个程序,它将图像从一台计算机发送到另一台计算机(类似于没有鼠标/键盘输入的远程协助)。我用来测试的两台计算机是一台 Windows XP 机器和一台 Windows Vista。我有一台直接连接到路由器的固定 XP 机器,以及一台通过无线连接的笔记本电脑。

从 XP 到 Vista 的传输效果很好,我能够获得在 Vista 上显示的恒定图像流。但是,当我翻转它并将图像从 Vista 发送到 XP 时,它不起作用。我还尝试了本地“复制”,即在没有网络的情况下获取图像流,这适用于 Vista 和 XP。这是两台机器上完全相同的程序。

我认为这并不重要,但我使用 GDI+ 来处理图像。所以我通过网络上的流发送一个 .jpg 并在另一端重建它。

我的网络消息类称为NetMsg。它由 achar* type和 a组成char* data。类型决定了我如何解释数据,这里没有问题。
我们将计算机称为#1 和#2。
当创建连接并且我在#1 上标记了要发送的区域时:
001> #1 发送类型 RESIZE // 以使#2 上的窗口与我在#1 上标记的区域大小相同
002> #1发送类型 PICTURE_DATA // 这是实际的图像数据
003> #2 收到上述两条消息后,发送类型 REQUEST_MORE // #2 想要更多图像数据
004> #转到步骤 1

在将图像数据从 XP 发送到 Vista 时,我什至都懒得调试它,因为它工作得很好,完全符合我的要求。但是,当 Vista 发送到 XP 时,我注意到以下内容:

  • 接收到的数据实际上可以是两个NetMsgs。我通过将数据分成几个来支持这一点NetMsgs
  • 收到的数据可能不完整,即我必须等待更多数据。我通过将 a 标记NetMsg为不完整并在下一次数据传输时完成它来支持这一点。(以及第一步的组合)

这几乎成功了,因为我正确传输了一些图像,但是它突然停止了。我没有彻底调试过,所以我不知道为什么数据突然停止了。但是:

我不明白的是,这在从 XP 发送到 Vista 时效果很好,但反之则不行。我错过了什么?

如果您需要提取代码,请告诉我,但是,它非常庞大......大约 500 行.. 否则,我正在寻找从 Vista 向 XP 发送数据时的已知问题。

任何帮助和/或反馈表示赞赏!

4

3 回答 3

0

很难真正确定地说出任何事情。但是,我强烈建议您为您的程序编写一个测试套件并实现一个测试用例来捕获这个特定问题。这将使您更容易重现故障,并且尝试生成可以证明问题的最小测试用例通常很有指导意义。此外,当您有(全自动)测试用例时,向其他人寻求帮助也更容易。

于 2010-02-09T19:50:06.077 回答
0

你真正需要做的是更详细地描述问题。“它不起作用”可能有 100 个原因。

你有没有通过任何数据?

尝试只发送几个字节,它们能通过吗?

如果没有通过,请尝试使用 Wireshark,Vista 是否将数据发送出去?

XP收到了吗?

这里没有魔法,您必须从头到尾检查数据路径。

于 2010-02-09T22:52:38.247 回答
0

它实际上在两台计算机上都处于阻塞状态,并且都在等待对方响应。

于 2010-02-16T11:41:27.127 回答