⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pc_client.c

📁 ARM9200+嵌入式linux下的网络驱动
💻 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 + -