var buffer = new ArrayBuffer(44)
var headerLength = new DataView(buffer, 0, 4)
var version = new DataView(buffer, 4, 4)
var passport = new DataView(buffer, 8, 8)
var sessionId = new DataView(buffer, 16,8)
var type = new DataView(buffer, 24, 4)
var id = new DataView(buffer, 28, 8)
var ip = new DataView(buffer, 36, 4)
var cmd = new DataView(buffer, 40, 4)
headerLength.setInt32(0,44)
cmd.setInt32(0,1000)
var view  = new Int8Array(buffer)
var arrbuffer = view.buffer
var cmdDataView = new DataView(arrbuffer,40,4)
var res_cmd = cmdDataView.getInt32(0)
console.log(res_cmd)

以上代码单独运行能拿到 res_cmd=1000,但放在 jmeter 中运行就取的值不对,请教各位大佬

修改下问题,经测试错误跟取样器没关系。而是在 jmeter 里面 我使用了 setInt32 这个方法,所有打印出来的值就取的是最后一个 setInt32 的值,比如以上代码:
headerLength.setInt32(0,44)
cmd.setInt32(0,1000)
这时候取 cmd 的值打印出来是 1000,但是换个顺序如下:
cmd.setInt32(0,1000)
headerLength.setInt32(0,44)
这时候取 cmd 的值打印出来就是 44,感觉是 log.info 打印出来的值始终是最后一次 setInt32 的值,我试了使用 setInt8 也是一样的。有人遇到相同的问题吗,求教


↙↙↙阅读原文可查看相关链接,并与作者交流