客户端将手机号发送给服务器,服务器将包含该手机号文件名发送给客户端
2011-10-09 17:58
232 查看
客户端
vi grep_client.c
服务端
vi grep_server-2011-09-21.c
vi grep_client.c
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <dirent.h> #include <unistd.h> #include <time.h> #define MYPORT 10009 #define HISPORT 10010 #define IP_COUNT 13 // 2011-09-18 // msn: xorg@163.com // client: ver0.1 struct packet { char data[1024]; }; void query_log(char *ip,char *phone) { int sd,sd2,newsd,ret; struct packet pkt; struct sockaddr_in my_end,his_end; int his_end_len; time_t timep; struct tm *tp; char nowtime[128]; pid_t pid; timep=time(NULL); tp=localtime(&timep); sprintf(nowtime,"%d-%02d-%02d-%02d-%02d-%02d",1900+tp->tm_year,(1+tp->tm_mon),tp->tm_mday,tp->tm_hour,tp->tm_min,tp->tm_sec); printf("%s\n",nowtime); pid=fork(); if(pid==-1) { fprintf(stderr,"fork() error.\n"); exit(-1); } if(pid==0) { //-- send phone number sd2=socket(PF_INET,SOCK_STREAM,0); if(sd==-1) { fprintf(stderr,"socket error.\n"); exit(-1); } his_end.sin_family=AF_INET; his_end.sin_port=htons(HISPORT); //his_end.sin_addr.s_addr=inet_addr("10.199.75.169"); his_end.sin_addr.s_addr=inet_addr(ip); ret=connect(sd2,(struct sockaddr *)&his_end,sizeof(his_end)); if(ret==-1) { perror("connect()"); exit(-1); } ret=write(sd2,phone,strlen(phone)); if(ret==-1) { fprintf(stderr,"write error.\n"); exit(-1); } printf("client write %d bytes.\n\n",ret); close(sd); // printf("\n\n"); exit(0); } else { //-- receve file name sd=socket(PF_INET,SOCK_STREAM,0); if(sd==-1) { fprintf(stderr,"socket error.\n"); exit(-1); } my_end.sin_family=AF_INET; my_end.sin_port=htons(MYPORT); my_end.sin_addr.s_addr=inet_addr("0.0.0.0"); int flag=1,len=sizeof(int); ret=setsockopt(sd,SOL_SOCKET,SO_REUSEADDR,&flag,len); if(ret==-1) { fprintf(stderr,"setsockopt() error.\n"); } ret=bind(sd,(struct sockaddr *)&my_end,sizeof(my_end)); if(ret==-1) { fprintf(stderr,"bind() error.\n"); exit(-1); } ret=listen(sd,5); if(ret==-1) { fprintf(stderr,"listen() error.\n"); exit(-1); } his_end_len=sizeof(his_end); while(1) { newsd=accept(sd,(struct sockaddr *)&his_end,&his_end_len); if(newsd==-1) { perror("accept()"); exit(-1); } ret=read(newsd,&pkt,sizeof(pkt)); if(ret==-1) { fprintf(stderr,"read error.\n"); exit(-1); } (pkt.data)[ret]='\0'; // printf("server read %d bytes, recv=\n%s\n",ret,pkt.data); if(strcmp(ip,"10.199.81.164")) printf("server read %d bytes:\n%s\n\n",ret,pkt.data); else printf("server read %d bytes:\n%s\n",ret,pkt.data); ret=close(newsd); if(ret==-1) { fprintf(stderr,"close() error.\n"); close(sd); exit(-1); } // exit process ret=close(sd); if(ret==-1) { fprintf(stderr,"close() error.\n"); exit(-1); } return; } } } int main(int argc,char *argv[]) { int i; char *array_ip[IP_COUNT]={"10.199.81.152","10.199.81.153","10.199.81.154","10.199.81.155","10.199.81.156","10.199.81.157","10.199.81.158" ,"10.199.81.159","10.199.81.160","10.199.81.161","10.199.81.162","10.199.81.163","10.199.81.164"}; if(argc<2) { printf("%s phone_num\n",argv[0]); exit(-1); } for(i=0;i<IP_COUNT;i++) query_log(array_ip[i],argv[1]); exit(0); }
服务端
vi grep_server-2011-09-21.c
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> #include <unistd.h> #include <sys/stat.h> #include <fcntl.h> #include <time.h> #define MYPORT 8800 #define HISPORT 10009 #define LOGFILE "/home/mtvwap/file.log" //#define LOGFILE "/home/uniadmin/test/logfile.log" // 2011-09-18 // msn: xorg@163.com // server: ver0.1 struct packet { char data[64]; }; int main() { FILE *file,*fp_log; char cmd[512]; char line[1024]; char data[2048]; char hostname[128]; time_t timep; struct tm *tp; char nowtime[128]; //-- /* pid_t pid; int fd; pid=fork(); if(pid==-1) { perror("fork()"); exit(-1); } if(pid!=0) exit(0); else { fd=open("/dev/null",O_RDONLY); if(fd==-1) { perror("open()"); } else { close(STDIN_FILENO); dup(fd); close(fd); } fd=open("/dev/null",O_WRONLY); if(fd==-1) { perror("open()"); } else { close(STDOUT_FILENO); dup(fd); close(STDERR_FILENO); dup(fd); close(fd); } setsid(); chdir("/"); } */ //-- gethostname(hostname,sizeof(hostname)); printf("%s\n",hostname); int sd,sd2,newsd,ret; struct sockaddr_in my_end,his_end; int his_end_len; struct packet pkt; sd=socket(PF_INET,SOCK_STREAM,0); if(sd==-1) { fprintf(stderr,"socket error.\n"); // exit(-1); } // my_end my_end.sin_family=AF_INET; my_end.sin_port=htons(MYPORT); my_end.sin_addr.s_addr=inet_addr("0.0.0.0"); // my_end.sin_addr.s_add=INADDR_ANY; int flag=1,len=sizeof(int); ret=setsockopt(sd,SOL_SOCKET,SO_REUSEADDR,&flag,len); if(ret==-1) { fprintf(stderr,"setsockopt() error.\n"); } ret=bind(sd,(struct sockaddr *)&my_end,sizeof(my_end)); if(sd==-1) { fprintf(stderr,"socket error.\n"); exit(-1); } ret=listen(sd,5); if(ret==-1) { fprintf(stderr,"sd listen error.\n"); fprintf(fp_log,"%s","listen() error.\n"); exit(-1); } his_end_len=sizeof(his_end); while(1) { newsd=accept(sd,(struct sockaddr *)&his_end,&his_end_len); if(newsd==-1) { perror("accept()"); // exit(-1); } printf("accept ok\n"); printf("his_end=%s\n",inet_ntoa(his_end.sin_addr)); ret=read(newsd,&pkt,sizeof(pkt)); if(ret==-1) { fprintf(stderr,"read error.\n"); fprintf(fp_log,"%s","newsd read() error.\n"); // exit(-1); } //else continue; (pkt.data)[ret]='\0'; printf("read newsd ok\n"); // log file fp_log=fopen(LOGFILE,"a+"); if(fp_log==NULL) { fprintf(stderr,"fopen() error.\n"); // exit(-1); } printf("fopen ok\n"); timep=time(NULL); tp=localtime(&timep); sprintf(nowtime,"\n\n%d-%02d-%02d-%02d-%02d-%02d",1900+tp->tm_year,(1+tp->tm_mon),tp->tm_mday,tp->tm_hour,tp->tm_min,tp->tm_sec); fprintf(fp_log,"%s\n",nowtime); fprintf(fp_log,"%s\n",hostname); printf("server read %d bytes, recv=%s\n",ret,pkt.data); fprintf(fp_log,"server read %d bytes, recv=%s\n",ret,pkt.data); // log file // ----------- // sprintf(cmd,"%s","cd /home/mtvwap/portal_wap/logs/server ; grep -l 18635529831 server*"); sprintf(cmd,"cd /home/mtvwap/portal_wap/logs/server ; grep -l %s server*",pkt.data); printf("cmd=%s\n",cmd); if(strstr(cmd,"\n")) { printf("warn:cmd is have enter, to restart.\n\n"); continue; } file=popen(cmd,"r"); if(file!=NULL) { sprintf(data,"%s\n",hostname); while(fgets(line,1023,file)!=NULL) { // printf("%s",line); // strcpy(data,hostname); strcat(data,line); // strcat(data,"\n"); } } strcat(data,"----------------"); printf("popen ok\n"); pclose(file); printf("pclose ok\n"); // ----------- /* if(strstr(pkt.data,"hello")) printf("execute script.\n"); else printf("no execute script.\n"); */ //-- sleep(2); sd2=socket(PF_INET,SOCK_STREAM,0); if(sd==-1) { fprintf(stderr,"socket error.\n"); fprintf(fp_log,"%s","sd2 socket() error.\n"); // exit(-1); } printf("socket sd2 ok\n"); // his_end his_end.sin_family=AF_INET; his_end.sin_port=htons(HISPORT); // his_end.sin_addr.s_addr=inet_addr("10.199.81.166"); his_end.sin_addr.s_addr=his_end.sin_addr.s_addr; ret=connect(sd2,(struct sockaddr *)&his_end,sizeof(his_end)); if(ret==-1) { perror("connect()"); fprintf(fp_log,"%s\n","sd2 connect() error."); fclose(fp_log); printf("sd2 connect() stop, to restart.\n\n"); continue; // exit(-1); } printf("connect ok\n"); ret=write(sd2,data,strlen(data)); if(ret==-1) { fprintf(stderr,"write error.\n"); fprintf(fp_log,"%s\n","write error."); // exit(-1); } printf("write ok\n"); printf("\nclient write %d bytes .\nstr=%s\n",ret,data); // log file fprintf(fp_log,"client write %d bytes.\n",ret); fprintf(fp_log,"%s\n\n","Ok!! grep success..."); ret=fclose(fp_log); if(ret==EOF) { fprintf(stderr,"fclose() error.\n"); // exit(-1); } printf("fclose ok\n"); // end log file //-- printf("\n"); close(newsd); close(sd2); } close(sd); exit(0); }
相关文章推荐
- 编写Socket客户端和服务器程序,客户端发送一个包含多个数字的字符串给服务器,服务器排序后返回给客户端,要求服务器能连续不断地服务。
- 客户端定时读取文件发送到服务器存到文件中(二、Crontab定时执行文件传输程序)
- Java-WebSocket 项目的研究(二) :客户端连接服务器并发送消息实例
- windows 服务器 服务端程序发送RST给客户端
- java客户端数据发送到服务器(POST请求)总结
- 请简要描述客户端发送的http request header都包含哪些内容
- qt,tcp传输,文件传输,服务器无法完整发送数据的解决方法(只发送了文件名没用传输数据bytesWritten=0)
- Android作为服务器通过USB使用Socket协议向PC客户端发送文件
- 简要描述客户端发送的http request header都包含哪些内容
- android客户端发送mail,不依靠服务器
- 关于客户端发送给epoll模型的服务器,卡send时的一个问题
- socket编程-客户端向服务器发送字符串,传文件
- tcp通讯_一个服务器可以给多个客户端发送图片
- 使用TCP协议实现客户端向服务器发送图片
- 由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端,
- ServerSocket和Socket建立通信(服务器和客户端循环接收发送)
- Lunix网络编程之socket(客户端发送请求,服务器处理例如:排序,两人联机五子棋)
- UDP 打洞示例 包含 服务器 客户端
- java实现代理服务器,接收客户端连接,发送到对应服务器