0

注意:这是为了在 LabWindows/CVI 中使用他们的 TCP 库编写一个 DLL。

我正在编写一个 TCP 客户端 DLL,该 DLL 旨在使用我的 UUT(充当服务器)读取/写入数据。我正在使用 CVI TCP 库。根据库的示例,我将使用一个同步回调函数来处理我作为客户端接收到的消息。当数据可用时,此回调函数将执行 ClientTCPRead(),如下面的代码片段所示。如您所见,当数据准备好时,read 函数会将数据存储在 uint32_t 类型的全局 g_recieveBuf 数组中。

在此处输入图像描述

问题一:

当涉及到我收到的大消息时,由于其他 TCP 时间问题,我经常需要多次调用来读取所有数据。我相信回调会处理这种情况。TCP_DATAREADY 案例将继续执行,直到读取所有数据。我相信这是这个库提供的实用程序,是什么使它如此简单的过程。我的问题是如何跨多个调用正确地将数据连接到我的全局数组中?我不想每次执行 ClientTCPRead() 时都覆盖我的数组。例如,如果服务器正在发送一条大消息,并且多次执行回调函数以读取所有数据,我希望它在我的数组中作为一条连续消息正确捕获。我的一位同事建议使用 List 构造(程序员的工具箱库)。我不

问题2:

来自服务器的数据是二进制格式的。它是具有已知标头大小的专有消息结构。标头还包含一个字段,告诉我服务器消息的总字节数(标头和正文)。在正确读取数据方面知道这一点有什么好处吗?我认为这没关系,因为我使用的是内置回调函数,如果数据可用,它将始终读取数据。那么,如果回调函数确保所有字节都被读取并存储在我的全局数组(或其他构造,如列表,如果我使用该方法)中,我为什么还要关心即将到来的字节数。

先感谢您。

4

0 回答 0