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

📄 myhost.c

📁 本程序实现了在s3c2410嵌入式板子下
💻 C
字号:
/**MyHost.c*@run sheng*/#include "MyHost.h"void MyServer(int port,char filename[]){  struct sockaddr_in server_sockaddr,client_sockaddr;  int sin_size,pic_num;  char *fname=malloc(strlen(filename)+6);  int sockfd,client_fd;  if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)    {       perror("socket error");       exit(1);    }   printf("*****socket create seccess!*****\n");   server_sockaddr.sin_family=AF_INET;   server_sockaddr.sin_port=htons(port);   server_sockaddr.sin_addr.s_addr=INADDR_ANY;   bzero(&(server_sockaddr.sin_zero),8);   if(bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))==-1)    {        perror("bind error");        exit(1);    }   printf("*****bind success!*****\n");   if(listen(sockfd,BACKLOG)==-1)    {       perror("liten error");       exit(1);     }   printf("*****Listening ......*****\n");	   pic_num=0;   while(1)   {   if((client_fd=accept(sockfd,(struct sockaddr *)&client_sockaddr,&sin_size))==-1)      {       perror("accept error");       exit(1);      }   if(fork()==0)   {    close(sockfd);    printf("*****a client connect!*****\n");    sprintf(fname,"%d_%s",pic_num,filename);    ser_pro(client_fd,fname);    printf("*****a client disconnect!*****\n");    printf("======================\n");    printf("====%s *** seccess====\n",fname);    printf("======================\n\n");    exit(0);   }   else     close(client_fd);  pic_num++;  }   close(sockfd);   exit(0);}void MyClient(char hostname[],int hostport,char filename[]){  int sockfd;  struct hostent *host;  struct sockaddr_in serv_addr;   if((host=gethostbyname(hostname))==NULL)   {    perror("gethostbyname error!\n");    exit(1);   }  if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)   {    perror("socket create error!\n");    exit(1);   }  serv_addr.sin_family=AF_INET;  serv_addr.sin_port=htons(hostport);  serv_addr.sin_addr=*((struct in_addr *)host->h_addr);  bzero(&(serv_addr.sin_zero),8);  if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1)   {    perror("connect error!\n");    exit(1);   }   printf("*****connect seccess!*****\n");   cli_pro(sockfd,filename);}void ser_pro(int sockfd,char filename[]){  char buf[MAXFILESIZE];  int m=0,n=0;  int fd;  if((fd=open(filename,O_RDWR|O_CREAT|O_TRUNC,S_IRWXU))==-1)  {    perror("open file error!\n");    return;  }  printf("*****begin receive data!*****\n");  while((n=recv(sockfd,buf,MAXFILESIZE,0))!=0)   {     m=writebuffer(fd,buf,n);     if(m!=n)      {        perror("write file error!\n");        break;      }   }  printf("****end receive data!****\n");  printf("*****receive data seccess!*****\n");   close(fd);  close(sockfd);}void cli_pro(int sockfd,char filename[]){  char buf[MAXFILESIZE];  int m=0,n=0;  int fd;  if((fd=open(filename,O_RDONLY,S_IRWXU))==-1)  {   perror("file not exsist!\n");   exit(1);  }   printf("*****begin send data!*****\n");   while((n=readbuffer(fd,buf,MAXFILESIZE))!=0)   {     m=send(sockfd,buf,n,0);     if(m!=n)     {       perror("send data error!\n");       break;     }   }  printf("*****end send data!*****\n");  printf("*****send data seccess!*****\n");  close(fd);  close(sockfd);}int readbuffer(int fd,char *buf,int len)   {       return read(fd,buf,len);   }int writebuffer(int fd,char *buf,int len)   {       return write(fd,buf,len);   }void convert(int width, int height, const unsigned char *src, unsigned char *dst, int push){  int line, col, linewidth;  int y, u, v, yy, vr, ug, vg, ub;  int r, g, b;  const unsigned char *py, *pu, *pv;  FILE *fp;  if((fp = fopen ("output.ppm", "w+")) == NULL)     {                printf ("Could not open output.ppm file for writing.\n");		exit(1);     }	  fprintf (fp, "P6\n%d %d\n255\n", width, height);	linewidth = width >> 1;	py = src;	pu = py + (width * height);	pv = pu + (width * height) / 4;	y = *py++;	yy = y << 8;	u = *pu - 128;	ug =   88 * u;	ub =  454 * u;	v = *pv - 128;	vg =  183 * v;	vr =  359 * v;	for (line = 0; line < height; line++) {		for (col = 0; col < width; col++) {			r = (yy +      vr) >> 8;			g = (yy - ug - vg) >> 8;			b = (yy + ub     ) >> 8;			if (r < 0)   r = 0;			if (r > 255) r = 255;			if (g < 0)   g = 0;			if (g > 255) g = 255;			if (b < 0)   b = 0;			if (b > 255) b = 255;			switch(push) 			{			case PUSH_RGB24:				*dst++ = r;                                   putc(r,fp);				*dst++ = g;                                   putc(g,fp);				*dst++ = b;                                    putc(b,fp);				break;                        default:                                break;						}						y = *py++;			yy = y << 8;			if (col & 1) 			{				pu++;				pv++;				u = *pu - 128;				ug =   88 * u;				ub =  454 * u;				v = *pv - 128;				vg =  183 * v;				vr =  359 * v;			}		} /* ..for col */		if ((line & 1) == 0) 		{			pu -= linewidth;			pv -= linewidth;		}	} /* ..for line */	fclose(fp);}void rgb24(int width, int height, const void *src, void *dst){    convert(width, height, (const unsigned char *)src, (unsigned char *)dst, PUSH_RGB24);}

⌨️ 快捷键说明

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