通过网络连接将数据从c#发送到非托管c++

Sending data over a network connection from c# to unmanaged c++

本文关键字:c++ 网络 连接 数据      更新时间:2023-10-16

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

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

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

在'套接字编程'下有很多UDP/IP在互联网上可用的样本:比如这里:http://www.abc.se/~m6695/udp.html