jmeter 进行 tcp测试 02----实战篇----BinaryTCPClientImpl

本文详细介绍使用JMeter 5.1版本进行TCP协议接口测试的方法,包括配置修改、脚本参数设置及C语言消息封装过程。针对超时500错误提供了解决方案,涉及源码修改步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章:JMeter5.1开发TCP协议接口脚本

说明:我的项目是 单片机上位机 与 Netty 进行 socket 通信,软硬件约定的数据交换格式为:字节数组,所以这里测试中用了:BinaryTCPClientImpl

1、修改 jmeter 配置文件

jmeter.properties

修改TCP Sampler,如下图就可以了

2、Jmeter 脚本参数设置

3、Text to Send  来源说明【C语言】

消息发送方代码由 C 语言编写,发送消息封装成结构体,在C程序中打印出结构体的字节数组,然后复制粘贴到“Text to Send”即可。

C程序打印出结构体字节数组代码如下:参考:        https://blog.youkuaiyun.com/NRlovestudy/article/details/94392718

int print_all_byte(void *addr, int size)
{
	unsigned char *ptr = addr;
	int print_bytes = 0;

	if (NULL == ptr) {
		return -1;
	}

	while (print_bytes < size) {
		printf("%02x", *ptr);
		ptr++;
		print_bytes++;
	}
	printf("\n");
	return print_bytes;
}


int main(void)
{
	struct message
	{
	int length;
	char content[1020];
	};
	struct message msg;

	memset(&msg, 0, sizeof(msg));  
	sprintf(msg.content, "kjsakjcbjkb271671289cskbcsbs76e87");
	msg.length = strlen(msg.content);

	msglength = 4 + strlen(msg.content);

	if (msglength == print_all_byte((void *)&msg, msglength)) {
		printf("printf message success!\n");
	}
	return 0; 
}

4、超时 500 错误的处理

由于实际项目中通信双方并没有根据 特定符号 来判断消息结束,TCP测试时无法填写 End of line(EOL) byte value,这会导致接收超时错误,即使TCP连接和发送成功也会被Jmeter 判定为测试失败,这与实际需求不符,需要修改源码。

(1)源码导入IDEA:https://blog.youkuaiyun.com/NRlovestudy/article/details/94392777

(2)修改源码:参考  https://blog.youkuaiyun.com/woshilishu/article/details/86589558

第三个参数 设置为 null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值