我们希望从udp套接字接收数据包,udp数据包具有可变长度,我们不知道它们到底有多长,直到我们收到它们(其中一部分是精确的,长度写在第六个字节中)。
我们尝试使用MarkerEnd 功能 lrs_set_receive_option,但发现它在此问题上没有任何帮助。我们想要通过数据包接收的原因是我们需要通过发回用户定义的udp数据包来响应一些数据包。
有人知道如何实现吗?
更新
我们需要通过立即发回udp数据包来响应传入的udp数据包 udp数据包可能是这样的
|兽人代码|包长度真实的数据|
问题是我们不能让loadrunner为每个数据包返回数据,有时它会在缓冲区中返回很多数据包,有时它会等到超时,尽管套接字缓冲区中有一个传入的数据包。 在c编程语言世界中,当调用recvfrom(udp socket)时,我们每次只返回一个udp数据包(每次调用),这是我们真正想要的。
答案 0 :(得分:1)
如果您需要原始套接字支持来拦截数据包级别,那么您可能必须使用原始套接字支持跳转到Visual Studio中的DLL虚拟用户。
关于UDP支持的问题:是的,Winsock用户同时支持核心传输类型UDP和TCP。 TCP是面向连接的更常见的变体。但是,数据包检查位于运营商协议IP的OSI模型的第3层。在收到您在脚本中使用的数据流之前,ACK应该出现。当您跳转到TCP和UDP级别时,您正在查看data.ws中的汇编数据流。
现在,您可能会收到有关接收缓冲区大小不匹配的警告,这会导致您将此路径与录制大小不匹配。有一种简单的方法可以解决这个问题。如果您使用 lrs_set_send_buffer()函数获取发送缓冲区并构造它,则返回的任何内容都将被视为正确,忽略先前记录的缓冲区大小,而不必等待匹配或超时之前仍在进行中。