【问题标题】:How to speedup UDP communications in Windows XP applications如何加快 Windows XP 应用程序中的 UDP 通信
【发布时间】:2009-11-30 07:28:04
【问题描述】:

我正在对软件进行一些维护,并且有一个我不明白的问题。

应用程序使用 Microsoft Visual C++ 6 开发并在 Windows XP 上运行。它由 21 个通过 UDP 套接字相互通信的应用程序组成。它是用于在 PC 环境中调试系统的嵌入式航空电子系统的模拟。每个应用程序都模拟嵌入式系统中的一个节点,嵌入式网络通过 UDP 进行模拟。该系统最初在多台 PC 上运行,但现在可以在单台四核机器上运行。

系统正在运行,但通信速度非常慢。然而,打开 Internet Explorer 并访问一个或两个网站会导致我的应用程序突然之间快速通信。

所以我的问题是 Internet Explorer 在访问网站时设置了什么,以便我的应用程序也可以设置它?该系统的原作者都不在了,而且我的 Windows 编程经验也很少。

【问题讨论】:

    标签: windows visual-c++ windows-xp network-programming udp


    【解决方案1】:

    毕竟这可能不是 Windows 问题

    1. 检查您的 API,检查您的缓冲区并检查不会导致 INVALID (-1) 并停止程序的错误消息“getlasterror()”即使您的程序运行完美也尝试使用它可能有有用的警告

    2. 检查 ACK 或攻击速度这是通过网络连接传输大量数据时的常见问题(

    3. 如果这些解决方案都不起作用,请尝试根据制造商网站检查您的驱动程序版本。

    4. 最后的手段是那些有用的想法: .使用此程序 www.lvllord.de 将最大半/打开连接数从 8 增加到 50 .使用服务器版 windows 可以提升一些基于互联网的程序 .如果您在多线程应用程序的不同线程中使用超过 2 个套接字,使用套接字 API 的多线程可能会导致 API 混乱,请尝试通过使用异步套接字或类似的东西来优化性能(msdn.microsoft.com/en- us/library/ms738551(VS.85).aspx)

    所以我的问题是 Internet Explorer 在访问网站时设置了什么,以便我的应用程序也可以设置它?该系统的原作者都不在了,而且我的 Windows 编程经验也很少。

    可能是 ACK 在 wiki 上检查它.. 这意味着在其他方面攻击速度.. 如果不是那么它将是接收窗口大小
    这两个设置对用户都是不可见的.. 但可以通过诸如调整实用程序或任何通用网络隐藏设置调整器等程序进行设置
    它可能只是解决问题..

    【讨论】:

    • 您的建议仅对 TCP 连接有效,对 UDP 连接无效,UDP 连接没有 ACK,也没有“半开连接”
    • 接收窗口大小是最后的希望吗? :D
    【解决方案2】:

    如果 UDP 上面的协议实现了可靠性,速度损失将是由于 localhost 上的大量 UDP 数据包丢失。本地主机上的 UDP 性能很糟糕,最好的办法是将套接字 API 包装在 TCP 层中。

    如果是 UDP 广播或多播,您将不得不考虑实现代理进程以通过 TCP 多路复用消息。

    可能更容易查看在进程间级别运行良好的现有消息传递 API,例如 ZeroMQ

    【讨论】:

    • 我已经放弃了这个问题,但我一定会尝试 ZeroMQ。
    【解决方案3】:

    尝试使用 Wireshark 查看 Internet Explorer 正在做什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多