基于Loadrunner平台Socket协议的JavaVuser(多线程)
2012-01-18 16:58
507 查看
/* * LoadRunner Java script. (Build: 15) * Script Description: * * 作者:谷博涛 * 制作时间:2012-1-18 * E-mail:captain_gbt@foxmail.com * Loadrunner:11.00 * * 内容概要: * 模拟基于Socket协议的即时消息系统中的客户端行为LR脚本, * 为模拟真实IM客户端,接收消息和发送消息分两个线程工作。 * */ import lrapi.lr; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Iterator; import java.util.concurrent.atomic.AtomicBoolean; public class Actions { // 客户端 private Socket client; // 房间号 private String roomId; // 用户ID private String id; // 输出流 private OutputStream out; // 输入流 private InputStream in; // 连接标志 //private boolean connFlag = false; private AtomicBoolean connFlag =new AtomicBoolean(false); // 客户端是否结束标志 //private boolean endFlag = true; private AtomicBoolean endFlag =new AtomicBoolean(true); public int init() throws Throwable { connect(); //lr.think_time(10); return 0; }//end of init public int action() throws Throwable { sendAction(); return 0; }//end of action public int end() throws Throwable { sendEnd(); return 0; }//end of end //====主题代码==================// //连接服务器 private void connect() { try { client = new Socket("127.0.0.1", 5222); System.out.println("connect success!!!"); out = client.getOutputStream(); in = client.getInputStream(); receiveAction(); login(); } catch (UnknownHostException e) { System.out.println("UnknownHostException=" + e); e.printStackTrace(); } catch (IOException e) { System.out.println("IOException=" + e); e.printStackTrace(); } } //登录服务器 private void login() { String loginMsg = "<msg type=\"login\" channel=\"CCTV1\"></msg>"; sendMsg(loginMsg); } //启动接收线程 private void receiveAction() { new ReceiveThread().start(); } //得到房间号码和用户ID private void getEleVal(String msg) { int index =0; index = msg.indexOf("to"); msg = msg.substring(index + 4, msg.length()); index = msg.indexOf("'"); id = msg.substring(0, index); System.out.println(roomId); index = msg.indexOf("roomId"); msg = msg.substring(index + 8, msg.length()); index = msg.indexOf("'"); roomId = msg.substring(0, index); System.out.println(id); connFlag.set(true); } //发送消息 private void sendAction() { if(connFlag.get()){ System.out.println("发送消息----->"); String msg = "<msg type=\"groupchat\" channel=\"CCTV1\" from=\"" + id + "\" to=\"" + roomId + "\"><body>test</body></msg>"; sendMsg(msg); } } //调用写入流方法 private void sendMsg(String msg) { //new SendThread(msg).start(); writeMsg(msg); } //将消息写入流 private void writeMsg(String msg) { try { if (out != null) { out.write(msg.getBytes("UTF-8")); out.flush(); } } catch (Exception e) { System.out.println("Exception=" + e); } } //关闭客户端 private void sendEnd() { endFlag.set(false); try { client.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 接收消息线程类 * * @author Administrator * */ private class ReceiveThread extends Thread { @Override public void run() { while (endFlag.get()) {// 循环接收消息 try { int len = in.available(); if(len>0){ System.out.println(len); byte[] bytes = new byte[len]; in.read(bytes); String result = new String(bytes); System.out.println("接收到的消息:" + result); if(result != null && !"".equals(result)&& result.contains("res_bind")){ getEleVal(result); } } } catch (Exception e) { // TODO: handle exception } } } } //======发送消息线程类(本代码未用到)========= private class SendThread extends Thread { private String msg; public SendThread(String msg) { this.msg = msg; } @Override public void run() { if (connFlag.get()) { writeMsg(msg); } } } }//end for class Actions
谷博涛
二零一二年 农历腊月廿五 下午
/article/8009240.html
相关文章推荐
- 基于Loadrunner平台Socket协议的JavaVuser(多线程)
- LoadRunner JAVA Vuser协议开发性能测试脚本 1
- 2016-08-23-java-基于socket和多线程的聊天器通讯
- loadrunner中JavaVuser协议,实例
- Java基于socket服务实现UDP协议的方法
- JAVA学习第六十课 — UDP协议 &基于多线程模拟简单的QQ聊天程序
- 基于Tcp&UDP协议的简单Socket通信实例(JAVA)
- java--通过socket和多线程进行多个客服端与服务器的简单通讯--基于tcp
- Java下基于Socket的多线程聊天室
- Java基于Socket的简单多线程服务模式
- Java Socket 多线程编程及socket协议详解
- Java基于Socket实现简单的多线程回显服务器功能示例
- 使用LoadRunner8.1的java Vuser协议调用jar文件(一) [ 光影人像 东海陈光剑 的博客 ]
- Loadrunner中java Vuser协议脚本开发
- loadrunner java_vuser协议分布式部署
- JAVA基础再回首(二十八)——网络编程概述、IP地址、端口号、TCP和UDP协议、Socket、UDP传输、多线程UDP聊天
- 基于tcp/udp socket多线程并发实现对二进制协议的压力测试
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
- 如何使用LoadRunner8.1的java Vuser协议调用jar文件
- Java Socket多线程编程、通信模型及socket协议详解