专用网络上的套接字

本文关键字:套接字 网络 专用网 专用 | 更新日期: 2023-09-27 17:50:51

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

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

可以保证的一件事是嵌入式设备将保持静态IP地址169.254.1.1。我就知道这么多。那么我需要知道什么才能把它们连起来呢?我知道子网有问题……但这就是我的知识不足之处。哪些应该是客户端,哪些是服务器端,端口号等

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

专用网络上的套接字

您可能需要查看一些套接字编程的介绍,例如http://beej.us/guide/bgnet。

windows节点必须以相同的方式配置网络接口子网作为rtos设备,并从中选择一个(不同的)IP地址子网。

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

当然,在tcp流中需要一些协议。可能是UDP如果您不需要TCP提供的特性,也可以选择。这也可以减少RTOS端的内存占用

如果双方可以相互独立地重新启动(或崩溃:-),而无需一些硬件看门狗要注意,一定要对方识别重新启动(例如,使用TCP保持连接功能),以便您可以重新建立连接。

使用TCP,你会得到可靠的连接,但取决于你的应用程序,您可能会发现Nagle算法使您的消息延迟更长而不是RS232设置。使用套接字上的NO_DELAY选项来避免这个。

我强烈建议您不要自己使用TCP。它很好,但对于机器到机器的接口有许多难以发现的缺陷(例如,唠叨、KA配置、测试打包状态机)。

现在是2012年。你可以使用ZeroMQ和类似的[随时编辑更多和更好的IP消息库]。