c# - 用于在 UI 和 C 代码之间进行消息传递的套接字?

标签 c# c wpf winforms sockets

我已经实现了一个 C 库,并希望将其功能公开给 UI。 UI 将是 Windows 窗体 UI 或 WPF UI。

为了想出一种更“独立于平台”的方式将 UI 和 C 库绑定(bind)在一起,我考虑过在 UI 端和 C 端创建一个套接字。套接字将用于在 UI 和库之间交换双向消息。我知道这样做可能会有一些开销,但 UI 和 C 代码之间的“消息流量”不会很大。

这样做的另一个原因是因为我读到过当您使用 PInvoke、IJW、COM 或 CLI(用于启用 C#-to-C 调用和C 到 C# 调用)。这种套接字方法使它更干净,并且我可以更好地控制 C# 代码向 C 代码发送消息(或相反)时实际发生的情况。

为了开始并避免浪费我的时间,我正在寻找对套接字代码了解很多的经验丰富的开发人员的一些建议。

我不确定对两边的套接字代码有什么要求?我确实知道我希望 UI 端的任何组件都能够发送和响应消息。

UI communicates with C module through a socket

最佳答案

使用套接字需要你的c程序成为一个服务器,它打开一个套接字并监听。收到请求后,它会做一些事情,通常会返回一个答案。这个想法是联网计算机之间的通信。

这是一个基本的例子。 http://www.linuxhowtos.org/C_C++/socket.htm

编写套接字代码需要发送应用程序和接收应用程序之间兼容的数据格式。这意味着您需要仔细构建消息并确保每个整数、长整数、 float 、 double 和固定长度字符串完全匹配。一侧的额外字节会将您的消息打乱为垃圾。如果您的 c 和 c# 数据编码格式不匹配 - 您将需要额外的解码/格式化工作。

我更喜欢使用 ONC-RPC 在不平等的系统之间编写客户端服务器代码。十年前,我使用 RPC 将大端 Solaris 连接到小端 VMS 系统——它运行完美,编写速度非常快。

我会避免编写低级套接字代码,因为它既费时又困难,除非您需要高性能的网络应用程序。

关于c# - 用于在 UI 和 C 代码之间进行消息传递的套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25979730/

相关文章:

c# - 手动创建 VisualStudio 2012 项目文件

c# - ListView 中的 BindingGroup 与 DataTemplate

c - 整数除法的行为是什么?

c# - 在代码完成执行之前动态更新 WPF 窗口

c# - 为什么 GeometryDrawing 显示在带有裁剪坐标的 Canvas 上?

c# - 使用 C# 从 Windows\System32 目录中删除文件

c# - 如何在 Moq 中使用 lambda 语法设置现有模拟?

c - 在 C 中初始化二维数组的整列

c - 如何使用fread和fwrite函数读写二进制文件?

c# - 在WPF C#中画一条直线