`
RepublicW
  • 浏览: 83271 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

使用JMETER对TCP/IP服务器进行压力测试

 
阅读更多
使用jmeter中的javasampler

package com.roiland.test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.util.Map;

import javax.xml.bind.annotation.adapters.HexBinaryAdapter;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

public class TestDBConnection extends AbstractJavaSamplerClient {

    private final static String TEST_LABEL = "TcpDB";

    private final static short EXPECTED_HEAD = 0x8900 & 0xff;

    private final static byte EXPECTED_HEART = 0x00;

    BufferedOutputStream bos;
    BufferedInputStream bis;

    @Override
    public SampleResult runTest(JavaSamplerContext arg0) {

	String ip = arg0.getParameter("ip");
	int port = arg0.getIntParameter("port");
	SampleResult sr = new SampleResult();
	sr.setSampleLabel(TEST_LABEL);
	Socket socket = null;
	try {

	    socket = new Socket(ip, port);
	    socket.setSoTimeout(2000);
	    bos = new BufferedOutputStream(socket.getOutputStream());
	    bis = new BufferedInputStream(socket.getInputStream());

	    byte[] data = { 9, 0, 1, 1, 4, 0, 29, 1, 1, 13, 8, 13, 9, 18, 24,
		    3, 0, 2, 0, -71, 103, 43, 0, 3, 0, 59, 69, -57, 0, 11, 0,
		    4, 56, 120, -48, 39 };
	    byte[] auth = { 9, 0, 1, 1, 1, 0, 30, 1, 65, 65, 49, 50, 51, 52,
		    53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 49, 49, 49, 49,
		    49, 49, 49, 49, -69, -100, -123, 117 };

	    ByteBuffer buf = ByteBuffer.allocate(auth.length);
	    ByteBuffer buf1 = ByteBuffer.allocate(data.length);
	    buf.put(auth);
	    buf1.put(data);
	    buf1.flip();
	    buf.flip();
	    int i = 0;

	    // byte[] reHead = new byte[2];
	    while (true) {

		try {
		    if (i == 0) {
			bos.write(buf.array());

			bos.flush();
		    }
		    int length = bis.available();
		    if (length != 0) {

			byte[] dataT = new byte[length];
			if (length > 3) {
			    byte serial = dataT[3];
			}
			if (length == 4) {

			} else {
			    bis.read(dataT);
			    short head = (short) (((dataT[1] & 0xFF) << 8) | (dataT[0] & 0xff));
			    if (head != EXPECTED_HEAD) {
				break;
			    }
			}
		    }
		} catch (IOException e) {
		    sr.setSuccessful(false);
		}

		if (i == 2) {
		    try {
			bos.write(buf1.array());
			bos.flush();
	
			sr.setSuccessful(true);
			break;
		    } catch (IOException e) {
			sr.setSuccessful(false);
		    }

		    break;
		}
		i++;

	    }
	} catch (UnknownHostException e1) {

	    sr.setSuccessful(false);
	} catch (IOException e1) {

	    sr.setSuccessful(false);
	} finally {
	    try {

		bos.close();
		bis.close();
		socket.close();
	    } catch (IOException e) {

		sr.setSuccessful(false);
	    }
	}

	return sr;
    }

}

分享到:
评论

相关推荐

    JMeter 之TCP服务器并发压力测试

    本文将详细介绍如何使用JMeter进行TCP服务器的并发压力测试,包括环境搭建、软件下载与安装、以及具体的操作实例。 首先,要使用JMeter进行测试,需要确保你的环境中安装了JDK(Java开发工具包)。JMeter要求JDK...

    linux tcp服务器压力测试

    进行TCP服务器压力测试,我们通常会使用一些专门的工具,如`nc`(netcat)、`ab`(Apache Bench)、`jmeter`、`wrk`或自定义的客户端程序,如压缩包中的`mystressclient`。这些工具可以模拟大量并发连接,向服务器...

    基于JMeter模拟1万个终端设备,进行TCP长连接性能测试1

    在本文中,我们将深入探讨如何使用Apache JMeter进行TCP长连接性能测试,特别是在模拟1万个终端设备场景下。首先,我们需要了解的是物联网(IoT)背景下的设备通信协议,这通常涉及身份认证、数据传输等多个步骤。在这...

    jmeter 5.1.1 tcp链接 发送protobuf消息到服务端,并返回结果的demo

    总结来说,这个示例展示了如何使用JMeter与基于Vert.x和Kotlin的服务端进行TCP通信,涉及到了protobuf的序列化和反序列化,以及JMeter的TCP测试功能。通过这个实践,开发者可以更好地理解网络通信、性能测试和协议...

    视屏监控(基于TCP/IP二)

    7. **监控工具**:开发和维护过程中,可能使用Wireshark抓包分析网络流量,用Nmap扫描网络设备,用JMeter测试服务器性能,以及利用各种日志分析工具进行问题排查。 8. **云平台集成**:现代视频监控系统常常与...

    Socket服务器压力测试工具

    为了进行这样的测试,通常会使用专门的压力测试工具,如Apache JMeter、LoadRunner、Tsung等,它们可以自定义测试脚本,模拟各种用户行为,并提供丰富的报告和图表来展示测试结果。 在文件列表中的"Pressure"可能是...

    JMeter使用plugins插件进行服务器性能监控

    本文将详细介绍如何利用JMeter与plugins插件进行服务器性能监控。 首先,性能测试的关注点分为两个主要方面: 1. 服务本身:并发、响应时间和QPS(Queries Per Second)是衡量服务性能的关键指标。并发指的是系统...

    用jmeter测试tcp服务器-其它文档类资源

    本篇文章将详细探讨如何使用JMeter来测试TCP服务器,以及在进行此类测试时需要注意的关键知识点。 首先,理解TCP协议至关重要。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在进行...

    SOCKET 压力测试工具及源代码

    Socket是网络编程中的基本概念,它是进程间通信的一种方式,特别是在分布式系统中,通过Socket可以实现...在实际应用中,可能还需要结合实际业务需求,对测试脚本进行定制化开发,以更好地模拟真实世界中的用户行为。

    jmeter使用教程

    - **定义**:接口测试主要是指对系统中的接口进行测试,确保接口能够正确地进行数据交换和控制管理。 - **作用**:确保接口的稳定性和可靠性,发现可能存在的问题。 - **实现方式**:使用JMeter发送请求并接收响应,...

    jmeter 测试 websocket

    JMeter,一个流行的开源性能测试工具,也支持对WebSocket服务进行测试。下面我们将详细讨论如何使用JMeter来测试WebSocket服务,以及提供的文件在测试过程中的作用。 首先,我们要理解“jmeter 测试 websocket”这...

    jmeter3.1官方源码

    Apache JMeter 3.1是开源的性能测试工具,主要用于测试Web应用的负载和压力。它的源码提供了深入了解其工作原理的机会,同时也为开发者提供了定制和扩展JMeter的可能性。在这个"apache-jmeter-3.1_src.zip"压缩包中...

    jmeter基础入门(HTTP,TCP,SQL查询,新增,查看报告).rar

    JMeter是一款开源、免费的性能测试工具,广泛应用于Web应用的压力测试、负载测试以及功能测试。本教程将从基础入门,逐步介绍如何使用JMeter进行HTTP请求测试、TCP连接测试、SQL查询以及生成和查看测试报告。 首先...

    jmeter perform

    用户可以根据需要添加或更新这些库,以扩展JMeter的功能,例如添加对特定协议的支持,或者使用自定义插件进行复杂的数据处理和分析。 总结来说,JMeter的远程性能测试功能为我们提供了强大的工具,可以跨多台机器...

    Jmeter接口测试1

    - 通过对这些示例代码的学习,可以更好地理解如何使用JMeter进行Java环境下的接口测试开发。 通过上述知识点的学习,开发者能够更深入地了解如何利用JMeter进行高效的接口自动化测试,从而提高软件质量。

    c# tcp测试

    - 性能测试:模拟大量并发连接,测试服务器的并发处理能力,可以使用Apache JMeter或自定义的C#程序来实现。 - 压力测试:通过发送大量数据来测试网络带宽和TCP缓冲区的处理能力,评估系统在高负载下的稳定性。 6...

    Jmeter压测工具,亲测有效!!!

    JMeter是一款广泛使用的开源压力测试工具,主要用于测试Web应用的性能和稳定性。它不仅支持HTTP、HTTPS协议,还支持其他多种协议,包括我们在此文档中关注的TCP协议。在本文中,我们将详细介绍如何在Windows环境下...

    计算机软件测试JMeter培训测试工程师软件工程师

    作为100%纯Java应用程序,它被设计用于测试Web应用,但现在已经扩展到支持对其他各种应用、服务器和协议类型的负载及性能测试。JMeter具有以下核心特性: 1. **支持多种应用和服务的测试**:JMeter可以测试...

    TCP&amp;UDP;测试工具 用钱买的资料,绝对有用 很好的资源

    5. **JMeter**:虽然主要为压力测试设计,但也可用于测试TCP和UDP服务的性能,模拟大量并发连接,检查服务器承受能力。 6. **hping3**:一个功能强大的TCP/IP协议测试工具,可以测试TCP SYN Flood、UDP Flood等攻击...

Global site tag (gtag.js) - Google Analytics