C#中的Windows .NET程序与C ++中的Linux程序之间的TCP

时间:2011-07-06 03:58:28

标签: c# c++ tcp udp kinect

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

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

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

3 个答案:

答案 0 :(得分:2)

当然。在网络方面,服务器和客户端编写的编程语言并不重要。您是否真的认为多人Flash游戏在后端运行闪存服务器?

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

答案 1 :(得分:1)

  

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

很酷,恭喜学习新东西。

  

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

这就是拥有我们都同意的“协议”的目的。就像握手的工作方式非常相似。我们都同意应该是这样的,所以它就是这样的。接听电话并打个招呼,其中打招呼的原因是在消化消息的下一部分(真相)之前,给另一只耳朵提供几个音节来识别木材和你的声音。 (这也是我们为什么要对网络进行握手的原因 - 确定你正在与某人交谈,然后开始说话。)

  

或者最好用OpenNI扩展C ++程序?

如果那是分配的要求,那么就这样做,但我不认为在另一个库中添加必然是最好的答案。我会坚持简单的任务。

答案 2 :(得分:0)

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