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

📄 simplesocket3.c

📁 S3C2410开发板与PC机的通信 客户端和 服务器端的代码 以及makefile文件 服务器为开发板 执行 S3 PC机为客户机 执行host.c
💻 C
字号:
#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<string.h>#include<sys/types.h>#include<sys/stat.h>#include<netinet/in.h>#include<sys/wait.h>#include<sys/socket.h>#include <ctype.h>#define MYPORT 2000                                /*¶šÒå·þÎñÆ÷µÄŒàÌý¶Ë¿Ú*/#define Max 100                                    /*¶šÒåÁË·þÎñÆ÷Ò»ŽÎ¿ÉÒÔœÓÊܵÄ×Ö·ûÊýÄ¿*/#define BACKLOG 10                                 /*BACKLOGÖž¶šÔÚÇëÇó¶ÓÁÐÖÐÔÊÐíµÄ×îŽóÇëÇóÊý£¬œøÈëµÄÁ¬œÓÇëÇóœ«ÔÚ¶ÓÁÐÖеȎýaccept£š£©º¯ÊýœÓÊÜËüÃÇ*/main(){int sock_fd,new_fd[5], numbytes,t; char buf[Max],filename[10];    /*sock_fd,new_fdÊÇÌלÓ×ÖÃèÊö*/ int nsize,nnsize,i,j,filelength; struct sockaddr_in my_addr;                        /*·þÎñÆ÷µÄµØÖ·œá¹¹Ìå*/ struct sockaddr_in their_addr;                     /*Ö÷»úµÄµØÖ·œá¹¹Ìå*/ int sin_size; int allsize=0; FILE *fp; struct stat st; char szsendbuf[128],head[8],buf1[10],buf2[10],buf3[2],length; int *phead=head+4;// struct stat st;if((sock_fd=socket(AF_INET,SOCK_STREAM,0))==-1)    /*œšÁ¢Á÷ÊœÌלÓ×ÖÃèÊö·û£¬ŽíÎóâ*/	{perror("socket");	 exit(1);	}/*·þÎñÆ÷œá¹¹ÌåµÄµØÖ·ž³³õÖµ*/ my_addr.sin_family=AF_INET;                        my_addr.sin_port=htons(MYPORT);                  /*·þÎñÆ÷µÄ¶Ë¿ÚºÅ2000*/ my_addr.sin_addr.s_addr=INADDR_ANY; bzero(&(my_addr.sin_zero),8);                    /*Ìî³ä0£¬ŽÕÆë³€¶È*/ /*°ó¶š*/ if(bind(sock_fd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))==-1) 	{perror("bindB");                               /*°ó¶šÊ§°Ü*/	 exit(1);	 } if(listen(sock_fd,BACKLOG)==-1)                 /*ŒàÌý¶Ë¿ÚÊÇ·ñÓÐÇëÇó*/ 	{perror("listen");                              /*ŒàÌýʧ°Ü*/	 exit(1); 	} t=0; while(1)	{  	sin_size=sizeof(struct sockaddr_in);  	if ((new_fd[t]=accept(sock_fd,(struct sockaddr *)&their_addr,&sin_size))==-1)  /*ijžö¿Í»§ÉêÇëµÄµØÖ·*/   	{perror("accept");    	continue;    	}  	printf("server:got connection from %s\n",inet_ntoa(their_addr.sin_addr));  ////////////////////////read filename///////////////////////	read(new_fd[t],filename,10);	printf("%s\n",filename);    //    filename[9]=0;////////////////////////////////////////	stat(filename,&st);	if((fp=fopen(filename,"r"))==NULL)    	{printf("Can't find the file");     	 return 1;    	}	filelength=st.st_size;	printf("file size :%d\n",filelength);	//write(fd,(char *)&filelength,sizeof(int)); 	for(i=0;(filelength/10)!=0;i++)	{buf1[i]=(char)((filelength-(filelength/10)*10)+48);	 filelength=filelength/10;	} 	buf1[i]=(char)(filelength+48);	buf1[i+1]='\0';	for(j=0;j<=i;j++)		{buf2[j]=buf1[i-j];}	buf2[j]='\0';	printf("%s,%d\n",buf2,j);	length=(char)(j+48);	buf3[0]=length;	buf3[1]='\0';	write(new_fd[t],buf3,1);//	delay();	write(new_fd[t],buf2,j);//        delay();  	nsize=128;  	allsize=0;	while(nsize == 128)	{		bzero(szsendbuf,128);		nsize = *phead = fread(szsendbuf,1,128,fp);		write(new_fd[t],head,8);		nsize =write(new_fd[t],szsendbuf,nsize);		allsize+=nsize;		if(allsize)			printf("now size :%d this time %d times :%d\n",allsize,nsize,allsize/128);		if(nsize <= 0)		{			printf("Can't send data!\n");			return 0;		}	}	close(new_fd[t]);	fclose(fp);	t++;      //  return 0;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -