LoadRunner可以通过UDP包接收数据吗?

标签 c sockets load performance-testing loadrunner

我们想从udp套接字接收数据包,udp数据包的长度是可变的,在我们接收到它们之前我们不知道它们到底有多长(部分准确,长度写在第六个字节)。

我们尝试了函数lrs_set_receive_option with MarkerEnd,但发现它对这个问题没有帮助。我们之所以要按包接收,是因为我们需要通过发回用户自定义的udp包来响应一些包。

有没有人知道如何做到这一点?

更新

  1. LR 版本似乎是 v10 或 v11。
  2. 我们需要通过立即发回 udp 数据包来响应传入的 udp 数据包。
    udp包可能是这样的


    |兽人代码 |数据包长度 |真实数据 |


  3. 问题是我们不能让 loadrunner 为每个数据包返回数据,有时它会在缓冲区中返回许多数据包,有时它会等到超时,尽管套接字缓冲区中有传入数据包。 而在 c 编程语言世界中,当调用 recvfrom(udp socket) 时,我们每次(每次调用)只返回一个 udp 数据包,这是我们真正想要的。

最佳答案

如果您需要原始套接字支持以在数据包级别进行拦截,那么您可能必须跳转到具有原始套接字支持的 Visual Studio 中的 DLL 虚拟用户。

关于您关于 UDP 支持的问题:是的,Winsock 用户支持两种核心传输类型,UDP 和 TCP。 TCP 是面向连接的更常见的变体。但是,数据包检查是在 OSI 模型的第 3 层进行的,用于运营商协议(protocol) IP。 ACK 应该在您收到供您在脚本中使用的数据流之前出现。当您跳转到 TCP 和 UDP 级别时,您正在查看 data.ws 中组装的数据流。

现在,您可能会收到有关接收缓冲区大小不匹配的警告,这会导致您走这条与记录大小不匹配的路径。有一种简单的方法可以解决这个问题。如果您获取发送缓冲区并使用 lrs_set_send_buffer() 函数构造它,则返回的任何内容都将被视为正确,忽略先前记录的缓冲区大小并且不必等待匹配或超时继续。

关于LoadRunner可以通过UDP包接收数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27399793/

相关文章:

asp.net-mvc - 使用 jQuery ajax/load 提交数组参数

java - 加载 Java JTable : Why does it not work?

c# - 从 SQL 获取列中的最后一个单元格

c - 问题中函数无法返回 returnSize 数组中的元素

C头文件依赖

c++ - 自定义 Windows GUI 库

sockets - 如何确定是否已完成从UNIX套接字的read()处理?

python 套接字,sock.connect 错误

c - 将四字移动到 %RDI 的操作码

c++ - C++中的客户端/服务器程序问题