Socket 基本概念
Socket 是一种操作系统提供的进程之间的通信机制。操作系统会提供一组封装了 TCP/IP 协议的 Socket 接口,进程便可通过这些接口来使用 Socket、收发网络数据。
在使用 Socket 接口时,一个进程的 IP 地址加上端口构成一个 Socket 地址;客户端与服务器双方进程的 Socket 地址再加上传输协议(TCP 或 UDP),就构成了 Socket 五元组,标识一次网络通信。
脚本编写
PTS API 的 socket 模块提供了支持 Socket 的相关接口,详见 Socket 概览。
使用这些接口,您可以建立 Socket 实例,然后通过该实例发送或接收 TCP/UDP 数据。
基本用法:
1. 创建 Socket 实例
通过
new socket.Conn
方法,可以创建一个 Socket 实例。该方法的参数为协议名(tcp
或 udp
)、服务地址、服务端口。2. 使用 Socket 实例
发送数据:通过实例的
send
方法发送数据。参数为二进制数据,返回值为发送的字节数。接收数据:通过实例的
recv
方法接收数据。参数为接收的字节数,返回值为接收的二进制数据。关闭连接:通过实例的
close
方法关闭连接。使用 TCP 协议的脚本示例:
// tcp connect to send packageimport socket from "pts/socket";import util from 'pts/util';import {sleep} from 'pts';export default function () {const tcp_socket = new socket.Conn('tcp', '127.0.0.1', 80);const send_data = `GET /get HTTP/1.1Host: 127.0.0.1User-Agent: pts-engine\\r\\n`;tcp_socket.send(util.toArrayBuffer(send_data));const bytes_read = tcp_socket.recv(512);tcp_socket.close();console.log(bytes_read);sleep(1);}
使用 UDP 协议的脚本示例:
// udp connect to send packageimport socket from "pts/socket";import util from 'pts/util';export default function main() {const udp_socket = new socket.Conn('udp', '127.0.0.1', 20001);const send_data = `test data`;udp_socket.send(util.toArrayBuffer(send_data));const bytes_read = udp_socket.recv(1024);udp_socket.close();console.log(bytes_read);}
脚本验证
文件依赖
在压测场景里,您可上传以下几种类型的文件,提供压测执行时的状态数据:
参数文件:以 csv 文件的形式,动态提供测试数据。也即,场景被每个并发用户(VU)执行时,会获取参数文件里的每行数据,作为测试数据的值,供脚本里的变量引用。具体使用方法参见:使用参数文件。
请求文件:构建您的请求所需的文件,如需要上传的文件。具体使用方法参见:使用请求文件。
协议文件:请求序列化所需要用到的文件。具体使用方法参见:使用协议文件。