总体思路就是客户端写入要查询的数据到管道中,服务器端从管道读取,然后写入随机文件,再把文件名写入管道,然后客户端再读取文件
服务器端
- 设置缓冲区大写,设置管道名字,以及标识有多少个线程等
1 //设置缓存区大小 2 #define SIZE 4096 3 //最多有多少线程 4 #define MAX_CONNECT 128 5 //一开始有10个线程存在 6 int startthreadnum = 10; 7 //管道名字 8 char pipename[128] = "\\.\Pipe\cloudpipe";
1 //文件路径 2 #define path "C:\Program Files\Apache Software Foundation\Apache2.2\cgi-bin\kaifang.txt" 3 //查询结果存放的路径 4 char randpath[1000] = ""; 5 //全局的二级指针 6 char ** g_pp; 7 //标示有多少行 8 int imax = 15151574;
- 创建句柄结构体
1 //结构体,hpipe存储管道信息,hevent用于给结构体初始化,存放连接管道的信息 2 typedef struct info 3 { 4 HANDLE hthread; 5 HANDLE hpipe; 6 HANDLE hevent; 7 8 }PIPE_ST; 9 10 //创建128个结构体 11 PIPE_ST pipeinst[MAX_CONNECT];
- 随机生成文件名存放查询的结果
1 //随机生成文件名存放查询的结果 2 void run() 3 { 4 time_t ts; 5 srand((unsigned int)time(&ts)); 6 sprintf(randpath, "C:\Program Files\Apache Software Foundation\Apache2.2\cgi-bin\%d.txt", rand()); 7 }
- 文件载入内存
1 //载入内存 2 void loadfromfile() 3 { 4 //分配指针数组 5 g_pp = (char **)malloc(sizeof(char*)*imax); 6 //内存清零 7 memset(g_pp, '