#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
struct info {
char dirname[50];
int mysock;
};
void* search_by_time(void * arg) {
FILE * fp; //文件指针
char strtime[32];
bzero(strtime, 32);
char start_time[16];
char end_time[16];
bzero(start_time, 16);
bzero(end_time, 16);
char dirname[20];
char cmd[200];
char path[20];
char colletc_file[20];
char colletc_file_data[50];
struct info *sinfo = arg;
int socket = sinfo->mysock;
while (1) {
if (socket != -1) {
int len;
while ((len = recv(socket, strtime, 32, 0)) > 0) {
if (strncmp(strtime, "quit", 4) == 0) {
fclose(fp);
pthread_exit(NULL);
}
strncpy(start_time, strtime, 15);
char *p = strtime;
p += 16;
strncpy(start_time, strtime, 15);
bzero(cmd, 100);
strcpy(cmd, "cd ");
strcat(path, "./");
strcat(path, sinfo->dirname);
strcat(path, "/");
system(cmd);
bzero(cmd, 100);
strcpy(cmd, "touch -t ");
strcat(cmd, start_time);
strcat(cmd, " start");
system(cmd);
bzero(cmd, 100);
strcpy(cmd, "touch -t ");
printf("%s\n", end_time);
strcat(cmd, end_time);
strcat(cmd, " end");
system(cmd);
bzero(cmd, 100);
strcpy(cmd,
"find ./* -newer start ! -newer end | tr -d \"./\" >>a");
fp = fopen("a", "r");
while (1) {
fgets(colletc_file, 20, fp);
if (strcmp(colletc_file, "end") == 0) {
fclose(fp);
} else {
FILE * cfp;
fp = fopen(colletc_file, "r");
fgets(colletc_file_data, 50, cfp);
printf("%s\n", colletc_file_data);
;
}
}
bzero(strtime, 32);
}
}
}
}
void* recv_data(void * arg) {
char dirname[20];
char filename[20];
char cmd[50];
char path[50];
char strtime[64];
time_t rawtime;
struct tm *t;
time(&rawtime);
t = localtime(&rawtime);
char recv_buf[100];
bzero(recv_buf, 100);
FILE * fp; //文件指针
struct info *sinfo = arg;
int socket = sinfo->mysock;
sprintf(dirname, "%s", sinfo->dirname);
strcpy(cmd, "mkdir ");
strcat(cmd, dirname);
system(cmd);
sprintf(path, "./");
strcat(path, dirname);
strcat(path, "/");
strftime(strtime, 64, "%Y-%m-%d-%H:%M", t);
strcat(path, strtime);
fp = fopen(path, "a+");;
while (1) {
if (socket != -1) {
int len;
while ((len = recv(socket, recv_buf, 100, 0)) > 0) {
if (strncmp(recv_buf, "quit", 4) == 0) {
fclose(fp);
pthread_exit(NULL);
}
printf("采集数据为: %s\n", recv_buf);
strcat(recv_buf, " ");
strcat(recv_buf, asctime(t)); //添加时间
fputs(recv_buf, fp);
fputs("\n", fp);
bzero(recv_buf, 100);
}
fclose(fp);
}
usleep(100000);
}
}
int main() {
struct sockaddr_in server_addr; //创建服务器地址
bzero(&server_addr, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr("10.16.103.243");
server_addr.sin_port = htons(8888);
int len = sizeof(server_addr);
int server_sock = socket(AF_INET, SOCK_STREAM, 0); //创建服务器监听套接字
int search_sock = socket(AF_INET, SOCK_STREAM, 0); //创建查询套接字
if (server_sock < 0) {
printf("创建服务器套接字失败!");
}
int opt = 1;
setsockopt(server_sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
if (bind(server_sock, (struct sockaddr*) &server_addr, len)) { //将服务器地址和服务器套套接字绑定
printf("服务器绑定端口: %d 失败!\n", ntohs(server_addr.sin_port));
exit(1);
}
opt = 1;
setsockopt(search_sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
if (bind(search_sock, (struct sockaddr*) &server_addr, len)) { //将服务器地址和服务器套套接字绑定
printf("服务器绑定端口: %d 失败!\n", ntohs(server_addr.sin_port));
exit(1);
}
pthread_t server_Listening_Thread;
pthread_t recv_data_thread;
pthread_t search_by_time_thread;
int new_server_socket; //服务器连接套接字
int new_search_socket;
listen(server_sock, 5); //服务器监听
listen(search_sock, 5);
while (1) {
struct info sinfo;
struct sockaddr_in client_addr; //创建客户端地址
int len = sizeof(client_addr);
new_server_socket = accept(server_sock, (struct sockaddr*) &client_addr,
&len);
if (new_server_socket < 0) {
printf("连接客户端 %s:%d失败!\n", inet_ntoa(client_addr.sin_addr),
ntohs(client_addr.sin_port));
break;
}
printf("连接客户端 %s:%d成功!\n", inet_ntoa(client_addr.sin_addr),
ntohs(client_addr.sin_port));
if (new_server_socket > 0) {
struct info sinfo;
bzero(&sinfo, sizeof(sinfo));
sinfo.mysock = new_server_socket;
strcpy(sinfo.dirname, inet_ntoa(client_addr.sin_addr));
pthread_create(&recv_data_thread, NULL, recv_data, &sinfo);
}
new_search_socket = accept(search_sock, (struct sockaddr*) &client_addr,
&len);
if (new_search_socket < 0) {
printf("连接客户端 %s:%d失败!\n", inet_ntoa(client_addr.sin_addr),
ntohs(client_addr.sin_port));
}
if (new_search_socket > 0) {
pthread_create(&search_by_time_thread, NULL, search_by_time,
&sinfo);
}
}
while (1)
usleep(4000);
return 0;
}
你这没有图片啊 怎么看啊