CarMaker - APO 简介

什么是APO - APO library

Protocol

TCP vs UDP

TCP(传输控制协议)和UDP(用户数据报协议)是互联网上常用的两种传输层协议,它们在数据传输方面有以下主要区别:

连接性:TCP是面向连接的协议,而UDP是无连接的协议。TCP在通信之前需要建立一个连接,数据传输完成后需要释放连接。UDP则没有连接的概念,每个数据包都是独立的。

可靠性:TCP提供可靠的数据传输,它使用确认、重传和序列号等机制来确保数据的完整性和顺序性。如果某个数据包丢失或损坏,TCP会重新发送。UDP不提供数据包的确认和重传机制,因此在传输过程中可能会出现丢包或乱序的情况。

效率:由于TCP提供了可靠性保证,它需要额外的开销来建立连接、维护状态和处理错误。这些额外的开销会导致TCP的传输效率相对较低。相比之下,UDP的传输效率较高,因为它没有这些额外的开销。

顺序性:TCP保证数据包按照发送的顺序进行传输和接收,这意味着接收端收到的数据包顺序与发送端发送的顺序一致。UDP没有这种保证,接收端可能会以任意顺序接收到数据包。

流量控制和拥塞控制:TCP具有流量控制和拥塞控制机制,它可以根据网络的状况调整数据传输的速率,以避免网络拥塞和数据丢失。UDP没有这些机制,它不会调整数据传输的速率,因此可能会导致网络拥塞和数据丢失。

基于这些区别,TCP适用于对数据可靠性要求较高的应用,如文件传输、电子邮件和网页浏览等。UDP适用于对实时性要求较高、数据丢失可接受的应用,如音频和视频流媒体、在线游戏和实时通信等。选择使用TCP还是UDP取决于应用的具体需求和对数据传输特性的要求。

Socket

TCP(传输控制协议)和UDP(用户数据报协议)是两种不同的传输层协议,而套接字(socket)是在应用层和传输层之间的接口。

套接字是一种编程接口,它允许应用程序通过网络进行通信。应用程序可以使用套接字与其他应用程序建立连接,并在连接上发送和接收数据。套接字提供了一组API(应用程序编程接口),使开发人员可以使用各种协议(包括TCP和UDP)进行网络通信。

TCP和UDP是套接字可以使用的两种传输协议。它们之间的区别已经在上一个回答中进行了详细解释。简而言之,TCP提供可靠的、面向连接的通信,而UDP提供无连接的通信,效率较高但不可靠。

总结起来,TCP和UDP是两种不同的传输层协议,套接字是应用程序与传输层之间的接口。应用程序可以使用套接字来选择使用TCP或UDP进行网络通信,根据应用程序对数据传输特性的要求来决定使用哪种协议。

APO Library

The APO library is a communications library used to pass messages back and forth between server applications and a client applications. The servers and clients can be running on the same host, on two or more hosts running the same OS and being connected by a network, or on two or more hosts running a different OS and being connected by a network.

APO库是通过TCP(流)和UDP(数据报)套接字构建的高级库 (built over TCP (Stream) and UDP (Datagram) sockets),旨在为用户提供简单的编程接口,同时保持大多数时间关键型应用程序所需的灵活性。

CARMAKER Application 就是一个APO的例子。carmaker可以被连接到多个clients,例如IPGControl, IPGMovie等。

APO communication work

APO Broker Daemon

APO broker daemon (代理守护;守护进程) 是在服务器所在的每台主机上运行的应用程序。每台主机只需要一个代理。代理的主要作用是维护在代理主机上运行的服务器的当前列表,并在需要时将此信息转发给客户端。

Example of Broker Daemon, Host 1 has a single broker daemon
example of Broker Daemon, Host 1 has a single broker daemon

Server

Need to do:

  1. Tell local broker daemon that it is alive
  2. After registering, tell the broker at a regular interval that it is still alive.
  3. The server must also send the updated variable data, send and receive application defined messages and handle subscription changes.

Client

The client queries all brokers using a broadcast, and receives information about all the servers.
在这里插入图片描述

Polling

在计算机科学中,轮询(Polling)是一种处理输入/输出(I/O)的技术。在轮询中,设备或者程序会定期检查其他设备或者程序的状态,以判断是否有数据可用或者是否需要进行某种操作。

在 IPG CarMaker 的 APO (Application Platform Online) 框架中,轮询也被用于处理数据的接收和发送。轮询模式下,Client程序会定期(按照预定的时间间隔或者在特定的时刻)向Broker发送请求,以获取最新的数据。 如果Broker有新的数据可用,它会将这些数据发送给Client。否则,Client可能会接收到一个空的响应或者一个特定的信号,表示没有新的数据。

使用轮询的优点是可以确保Client能够定期获取到最新的数据,并且可以在某些程度上控制数据的接收频率。然而,轮询也有一些缺点,例如可能会导致一些不必要的请求(当没有新的数据可用时),并且可能会引入一些延迟(因为Client必须等待下一个轮询时刻才能获取新的数据)。

Quantities (Variables) 变量

Quantities or Variables 由服务器 server 定义和更新,由客户端 client 读取。以CarMaker为例
一个Quatities(如速度或方向盘角度)将由运行中的CarMaker车辆模型(server)修改,并发送给要求了解该量的任何client(例如IPGControl)。
请求在指定时间间隔内发送一定数量的客户端被称为 "订阅 "了该变量。变量订阅在 APO functions section 进行了描述。

APO Function

对于APO Function的描述和介绍,可以看另一篇博客。
APO Funtions

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值