📄 pc_client.c
字号:
#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <string.h>#include <sys/times.h>#include <sys/time.h>int recv_data(int fd);#define PORT 80#define HOST "192.168.0.200"#define BUFSIZE 1024char buf[BUFSIZE];char sbuf[BUFSIZE];char *cmd[5]={ "##Start:", "##Stop:", "##Get status:" };int sd;/////////////////////////////////////////////////////////////////////int main(int argc, char **argv){ char hostname[100]; struct sockaddr_in sin; struct sockaddr_in pin; struct hostent *hp; int i=0; int recv_count=0; strcpy(hostname,HOST); if (argc>2){ strcpy(hostname,argv[2]); } /* go find out about the desired host machine */ if ((hp = gethostbyname(hostname)) == 0) { perror("gethostbyname"); exit(1); } /* fill in the socket structure with host information */ memset(&pin, 0, sizeof(pin)); pin.sin_family = AF_INET; pin.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr; pin.sin_port = htons(PORT);for(;;){ /* grab an Internet domain socket */ if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } /* connect to PORT on HOST */ if (connect(sd,(struct sockaddr *) &pin, sizeof(pin)) == -1) { perror("connect failed\n"); exit(1); } printf("connect to server ok!\n");//------------------------------------------------------------------------- sprintf(sbuf,"%s\n",cmd[0]); if (send(sd, sbuf, strlen(sbuf), 0) == -1) { perror("send"); exit(1); } for(;;){ if(recv(sd, buf, BUFSIZE, 0)<=0){ perror("recv"); //exit(0); break; } if((i++)%10000 ==0) printf("recv %d\r\n",i); } close(sd); sleep(2); // recv_data(sd); } return 0; //------------------------------------------------------------------------- }/////////////////////////////////////////////////////////////////////static double timeval_sub(struct timeval *x,struct timeval *y){ double result=(x->tv_sec - y->tv_sec)*1000000+(x->tv_usec - y->tv_usec); return result/1000000;}/////////////////////////////////////////////////////////////////////static int recv_data(int fd){ struct timeval start,stop,diff; double total_sec; int i,j,n; int recv_count=0; int len; FILE *fd_data; //fd_data=fopen() printf("receive data from server...\n"); gettimeofday(&start,NULL); while(1){ len=recv(fd, buf, BUFSIZE, 0); if(len <= 0) { perror("recv data complete\n"); break; } recv_count +=len; if(recv_count % 0x100000 == 0){ gettimeofday(&stop,NULL); printf("receive data %ld KB\n",recv_count>>10); total_sec=timeval_sub(&stop,&start); printf("=======================================\r\n"); printf("Receive %dKB data OK!\n", recv_count>>10); printf("Use time = %10.5f seconds!\n", total_sec); printf("SPEED = %10.4f KB/S\n", (recv_count>>10)/total_sec); printf("=======================================\r\n"); } }}//////////////////////////////////////////////////////////////////////*test all command to server*/int test_cmd(int argc,char** argv){ int i; while(1){ sprintf(sbuf,"%s\n",cmd[i]); i++; if(i>2)break; if(argc>1) sprintf(sbuf,"%s",argv[1]); if (send(sd, sbuf, strlen(sbuf), 0) == -1) { perror("send"); exit(1); } printf("send data to server ok!\n"); if (recv(sd, buf, sizeof(buf), 0) == -1) { perror("recv"); exit(1); } printf("recv data from server !\n"); printf(buf); sleep(2); } close(sd);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -