【问题标题】:Sending data over a network connection from c# to unmanaged c++通过网络连接将数据从 c# 发送到非托管 c++
【发布时间】:2014-08-01 12:15:52
【问题描述】:

我有一个 c# dll,它需要通过网络将一个非常复杂的对象发送到一个非托管 c++ 进程。我知道有很多方法可以做到这一点,但想知道是否有人可以推荐最合适的方法。需要注意的重点:

  1. 如果 c++ 进程未收到数据,通知 c# 进程至关重要。最好我想要一种尽可能可靠的数据传输方法。
  2. 不幸的是,我还面临着尽快交付数据包的压力,因此最终需要在可靠性和性能之间进行一些权衡。
  3. 表示数据的 c# 对象可能会发生变化。这是我们无法控制的第三方对象。理想情况下,我需要在 c++ 进程中使用一些动态机制来处理这些更改,并尽可能减少影响。最坏的情况是我们必须在每次对象数据更改时重新编译代码。
  4. 如果可能,我宁愿避免使用第三方库。

任何帮助将不胜感激。

【问题讨论】:

  • 对于您的 #1,请尝试 ØMQ,它将为您节省大量工作以使连接正常运行。
  • 投票结束,因为您有两个相互竞争的标准(可靠性/性能),但没有说明如何在它们之间进行选择 - 因此答案可能主要基于意见。
  • 这样的问题不都是某种程度的观点吗?可靠性和性能之间总是需要权衡取舍,因此好的答案需要在两者之间找到平衡点也就不足为奇了。
  • 这是一个非常常见的要求。这就是我用 C++ 编写的浏览器将您的问题从用 C# 编写的 SO 服务器获取到我的屏幕上的方式。您不太可能在这里使用 HTML :) 但是有很多替代方案,例如 XML 或 protobuf,它们可以在任何一种语言中工作。故意不使用库是非常低效的。

标签: c++ .net c#-4.0 network-programming


【解决方案1】:

据我了解您的问题,“网络”可能是指 LAN 或 WLAN。所以,我建议在双方都使用 UDP/IP。对于“如果 c++ 进程未接收到数据,通知 c# 进程至关重要”,您需要手动处理它(例如,通过每个接收数据包或一堆数据包的确认数据包)。

互联网上有很多用于 UDP/IP 和“套接字编程”的示例: 喜欢这里的一个:http://www.abc.se/~m6695/udp.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多