专用网络上的套接字

时间:2013-01-05 21:03:15

标签: c# sockets tcp embedded

我正在开发一个两部分产品。一部分是运行Windows Embedded Standard的单板计算机上的C#应用​​程序。另一部分是运行带有TCP / IP堆栈的RTOS的嵌入式设备。这两个设备需要通过以太网电缆进行通信。这是一种点对点连接。没有任何东西连接到任何外部网络。

我是一个网络编程新手,所以我正在寻找最佳实践。我假设TCP套接字是最简单的方法。我想在编写任何代码并迷路之前我会得到一些建议。

保证的一件事是嵌入式设备将保持静态IP地址169.254.1.1。这就是我所知道的一切。那么我需要知道如何让这些人联系起来?我知道子网存在问题......但这就是我的知识不足的地方。哪个应该是客户端,即服务器,端口号等。

每个请求更多信息:两端将交换一个非常简单的二进制协议。该部分已经定义,它通过RS-232链路工作。但是RS-232端口正在消失。我想使用TCP基本上携带这些信息,并给我所有好的东西,如重试和错误检查。系统的任何一端都可以启动传输。

2 个答案:

答案 0 :(得分:2)

您可能希望了解一些套接字编程的介绍,例如http://beej.us/guide/bgnet

Windows节点必须配置相同的网络接口 子网作为rtos设备并从中选择(不同的)IP地址 子网。

哪个设备是服务器并等待连接取决于您的 应用程序,也可能是两个节点的引导顺序。例如, 如果RTOS设备首先启动,它可能会等待TCP连接 直到另一方准备好了。

当然,你需要在tcp流中使用一些协议。可能是UDP 如果您不需要TCP提供的功能,也可能是一个选项。这个 也可能会减少RTOS端的内存占用量。

如果双方可以在没有的情况下相互重新启动(或崩溃:-) 一些硬件看门狗注意到,请确保对方认出了 重启(例如使用tcp keepalive功能),以便您可以重新建立 连接。

使用TCP,您将获得可靠的连接,但根据您的应用, 您可能会发现Nagle算法可以使您的消息延迟更高 而不是RS232设置。使用套接字上的NO_DELAY选项来避免 此

答案 1 :(得分:0)

我建议你自己反对做TCP。这很好但是有许多难以发现的机器到机器接口的缺陷(例如,唠叨,KA配置,测试打包状态机)。

我们是在2012年。您可以使用ZeroMQ和类似的[随意使用更多和更好的IP消息库进行编辑]。

相关问题