c - C 服务器通过互联网与 C# 对话的协议(protocol)是什么?

标签 c sockets dll client-server tcpclient

我可以使用什么来让基于 C# 的 UI 通过互联网与基于 C 的引擎对话?

我有一个用 C 编写的数据处理引擎 dll(我称之为服务器),它与用 C# 编写的用户界面客户端通信。 虽然我在这里使用术语“客户端”和“服务器”,但我只是在基于 C# 的 UI 与基于 C 的 UI“对话”的意义上使用它们。 使用 P/Invoke 的引擎。

客户端和服务器均仅运行在Windows 64位环境中。该引擎是通用 C 语言,可以重新编译以运行 任何操作系统,但目前(并且很可能正在进行中)我只关心 Windows 操作系统环境。

UI 控制应用程序,引擎则等待来自 UI 的请求。通常,发动机将闲置 90% 使用应用程序时的时间。一旦引擎收到来自 UI 的请求,它就会 处理请求的数据,并将结果返回给 UI。

UI 和引擎之间传递的数据量相对较少。当客户端和引擎进行通信时,数据量 客户端发送到引擎的数据很小(小于 1k),而引擎发回(通常)小于 5k 的数据。

考虑到这种情况,我应该使用什么来让客户端通过互联网与引擎对话?

最佳答案

What can I use to have a C#-based UI talk to a C-based engine over the internet?

任何东西。选择一个协议(protocol)。自己写。

libcurl跨平台并且支持一堆不同的网络协议(protocol),尽管它是针对客户端的(和WRT互联网协议(protocol),你通常必须区分客户端和服务器应用程序)。因此,您可以在 C# 应用程序中实现 HTTP 服务器,然后使用 libcurl 在 C 应用程序中实现 HTTP 客户端。

网络通常是特定于平台的任务,因此如果您不使用这样的库,则必须考虑到这一点。尽管如此,如果您认为这可以使用您自己的简单协议(protocol)来完成,那应该不会太困难(事实上,对于服务器来说可能更简单)。如果您不了解如何使用现有协议(protocol)(例如,使用 GET 和 POST 在 HTTP 中交换数据),这也可能会更容易。

关于c - C 服务器通过互联网与 C# 对话的协议(protocol)是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18854924/

相关文章:

html - 即使在 HTML 字符串中提供完全限定的 URL 后也无法应用外部 CSS

c++ - 将静态库链接到dll

c# - 将字符串从 C# 传递到 C .dll - 获取额外字符

C 程序省略字符

c - 用C中的递归函数添加字符串

c - pgm_read_ 和 PROGMEM - 意外行为

Android 客户端和服务器套接字

apache-flex - 首选的套接字策略文件服务器实现?

c - 用C语言制作主要算法/伪代码

java - Java 中的 SocketChannel 发送数据,但没有到达目标应用程序