【问题标题】:Low level C/C++ networking concepts for real-time programming?用于实时编程的低级 C/C++ 网络概念?
【发布时间】:2011-07-02 00:32:38
【问题描述】:

我对实时编程很感兴趣,虽然我觉得我对算法和数据结构有相当的了解,但我觉得我不太了解如何尽快将数据输入计算机以便过程。

为了帮助我,你们中的任何人都愿意指出我可以在 Google 上搜索的主题吗?我的大多数 C 书籍都没有真正涉及网络,而我的 C++ 书籍将网络视为一个基本主题。例如,在两台计算机之间创建 UDP 连接我不会有太大问题,但是您可以通过哪些方式使连接最有效?

提前致谢

【问题讨论】:

  • 网络 AFAIK 是一个依赖于平台的东西。在 Windows 中,您拥有WinSock。其他我暂时不记得了。这应该会给你一个开始的方向。
  • 其实 WinSockets 和 Linux 网络套接字的区别很小。如果您学习一个,另一个几乎是相同的。
  • 您的问题并没有真正说明您是否要这样做。您是否正在寻找像 Beej 的网络指南这样的东西?是硬实时(即工业自动化控制)还是软实时(如视频游戏和流视频)?
  • 实时网络需要特殊的网络硬件。不会因以太网等冲突或路由器的不可预测行为而陷入困境的那种。工业自动化中使用的现场总线就是一个例子。 UDP当然不适用,协议是自定义的。书籍不会谈论这个。

标签: c++ c networking real-time


【解决方案1】:

请注意:Real Time 表示您的应用程序有时间限制,并不一定意味着“快速”或“快速”或“高效”。实时运行可能需要 1 小时,但只要限制在 1 小时以内,就会是实时的。

至于网络 - 它本身不是实时的,因为您无法控制对方。有各种“实时”协议以各种方式处理此限制(因为您对时钟同步、视频/音频流等应用程序有时间限制),因此您需要根据需要深入研究这些特定协议。一个例子是RTP。你可以看到它相当复杂,不仅仅是以“高效”方式编写的 UDP 消息。

一般网络编程取决于系统,但您可以从 UNIX networkingBSD Sockets 开始了解。

【讨论】:

  • “实时”也可以简单地表示“流式传输”,没有实际限制。不过一般情况下不是联网的。
  • @Ben 我们一般不应该区分软实时系统和硬实时系统吗?即流媒体作为软 rt 系统的典型场景,它最好达到最后期限,但并不完全重要,这与某些错过最后期限可能会产生灾难性(例如 ABS)影响的硬 rt 系统相反?关于网络不是实时的定义:我反对,有些系统可以保证最大。高优先级消息的反应时间 - 尽管这可能取决于您如何定义“网络”。
  • @Voo:我并不是说网络不是实时的,我的意思是,在网络的情况下,“实时”几乎不仅仅是指流式传输,而是更经常地处理比一般情况下的截止日期。
【解决方案2】:

我建议您了解 Unix 环境中的网络。查找有关“Unix 网络编程”的书籍。它处理非常低级的东西。您将同时使用 POSIX 规范和 ANSI/ISO C 规范来编写网络程序。这两个规格都与历史交织在一起,因此一开始可能会有些混乱。

【讨论】:

    【解决方案3】:

    对网络不太了解,我保存了这本书以备日后阅读Internetworking with TCP/IP

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多