2

我对计算机网络和将数据发送到另一台计算机的主题不熟悉。目前,我的任务是将 C# Kinect SDK 程序与 Linux C++ Opengl/Covise 程序集成。然后,C++ 程序将接收并使用 Kinect 生成的输出。

尽管是在不同的平台和语言上编写的,是否可以让它们通过 TCP、UDP 或任何其他方式相互通信?还是最好用 OpenNI 扩展 C++ 程序?

目前安装 Opencover/Covise 对我来说是一个很大的痛苦。

4

3 回答 3

2

当然。说到网络,服务器和客户端是用什么编程语言编写的并不重要。你真的认为多人 Flash 游戏有一个运行在后端的 Flash 服务器吗?

你可以在网上找到一堆关于如何编写服务器和客户端、如何打开端口和监听连接、如何使用套接字的文章。等等

于 2011-07-06T04:05:34.003 回答
1

您绝对可以通过网络 (TCP/UDP) 跨语言和平台进行通信。您需要担心的第一件事是如何序列化和反序列化正在通信的数据或消息。例如,一个平台可以以 little endian 字节顺序存储整数,而另一个平台可能使用 big endian 字节顺序(也称为网络字节顺序)。此外,复杂的数据结构或对象需要序列化,以便其他平台可以轻松解释它们,例如,您不能仅在 C# 中使用 System.Serialization 并期望它在另一端易于解码。有许多用于跨平台通信的工具包或 API,例如 Swift、Protocol Buffers、SOAP、POX/REST 等。这些都有各种权衡,可能使它们或多或少适合您的特定应用程序。

于 2011-07-06T04:15:05.660 回答
1

我对计算机网络和将数据发送到另一台计算机的主题不熟悉。目前,我的任务是将 C# Kinect SDK 程序与 Linux C++ Opengl/Covise 程序集成。

酷,恭喜你学习了新东西。

尽管是在不同的平台和语言上编写的,是否可以让它们通过 TCP、UDP 或任何其他方式相互通信?

这将是制定我们都同意的“协议”的目的。就像握手的工作原理一样。我们都同意它应该是这样的,所以它就是这样。与接电话和打招呼相反,打招呼的原因是在消化下一条信息(真相)之前,给另一只耳朵几个音节来识别你声音的木材和语气。(这也是我们在网络上握手的原因——确定您正在与某人交谈,然后开始交谈。)

还是最好用 OpenNI 扩展 C++ 程序?

如果这是作业的要求,那么就这样做,但我认为添加另一个库不一定是最好的答案。我会坚持更简单的任务。

于 2011-07-06T04:24:01.643 回答