简单动手,写一个windows平台的服务器承压测试软件. 类似于apache的ab.
#include<iostream>
#include<atomic>
#include<thread>
#include<condition_variable>
#include<mutex>
#include<stdlib.h>
#include<string>
#include<string.h>
#include<regex>
#include<ws2tcpip.h>
#include<vector>
#include<windows.h>
#pragma comment(lib,"Ws2_32.lib")
#include <winsock2.h>
#define BUF_SIZE 65535
#define _WINSOCK_DEPRECATED_NO_WARNINGS
bool Start = false;
std::mutex mut;
std::condition_variable cv;
std::atomic<int> Count = 0; //for Count working Thread.
std::atomic<int> N_request = 1000;
std::atomic<int> N_data = 0;
std::atomic<int> N_Fished = 0;
const char* request = "GET /gdl/poems/ HTTP/1.1\r\n\r\n";
const int len_r = strlen(request);
const std::regex r("\\r\\nContent-Length:[ ]*([0-9]+)");
DWORD T0;
class RAII
{
public:
~RAII() {
std::lock_guard<std::mutex> lock(mut);
std::cout << "threadId: " << std::this_thread::get_id() << " end working. " << " sum threads: " << --Count << std::endl;
}
};
bool flag = true;
void
do_work(SOCKET sock) {
RAII ra;
char *buf = new