资源简介

压缩包内包含客户端imclient.c 服务端imserver.c 以及makefile,测试在64位centos机器下运行,需要安装mysql数据。程序流程,客户端通过读取图片数据然后通过socket将图片数据发送给服务端,服务端接收数据后,插入数据库。注意;数据库字段位blob类型,UTF8编码格式。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 

#include 
#include 

int PtTcpSnd(int sockfd char *buffer int length)
{
  int  len;
  int  totalcnt;     
  totalcnt = 0;
  
  printf(“Now Send Socket[%d]...“sockfd);
  while(totalcnt < length) 
  {
    len = write(sockfd buffer + totalcnt length - totalcnt);
    printf(“Send Socket len[%d]“len);
    if (len < 0) 
    {
      if (errno == EINTR) 
      {
        len = 0;
        break;
      }
      else
        return(-1);
    }
    else if (len == 0)
      break;

    totalcnt = totalcnt + len;
  }

   return(totalcnt);
}


int main()
{
int cfd;
   
struct sockaddr_in s_add;
unsigned short portnum=12306; 
printf(“Hellowelcome to client !\r\n“);

cfd = socket(AF_INET SOCK_STREAM 0);
if(-1 == cfd)
{
    printf(“socket fail ! \r\n“);
    return -1;
}
printf(“socket ok !\r\n“);

bzero(&s_addsizeof(struct sockaddr_in));
s_add.sin_family=AF_INET;
s_add.sin_addr.s_addr= inet_addr(“127.0.0.1“);
s_add.sin_port=htons(portnum);


if(-1 == connect(cfd(struct sockaddr *)(&s_add) sizeof(struct sockaddr)))
{
    printf(“connect fail !\r\n“);
    return -1;
}
printf(“connect ok !\r\n“);

FILE *fp = fopen(“qr.jpg“ “rb“);
  
  if (fp == NULL) 
  {
      fprintf(stderr “cannot open image file\n“);    
      exit(1);
  }
      
  fseek(fp 0 SEEK_END);
  
  if (ferror(fp)) {
      
      fprintf(stderr “fseek() failed\n“);
      int r = fclose(fp);

      if (r == EOF) {
          fprintf(stderr “cannot close file handler\n“);          
      }    
      
      exit(1);
  }  
  
  int flen = ftell(fp);
  
  if (flen == -1) {
      
      perror(“error occurred“);
      int r = fclose(fp);

      if (r == EOF) {
          fprintf(stderr “cannot close file handler\n“);
      }
      
      exit(1);      
  }
  
  fseek(fp 0 SEEK_SET);
  
  if (ferror(fp)) {
      
      fprintf(stderr “fseek() failed\n“);
      int r = fclose(fp);

      if (r == EOF) {
          fprintf(stderr “cannot close file handler\n“);
      }    
      
      exit(1);
  }

  char data[flen+1];

  int size = fread(data 1 flen fp);
  
  if (ferror(fp)) {
      
      fprintf(stderr “fread() failed\n“);
      int r = fclose(fp);

      if (r == EOF) {
          fprintf(stderr “cannot close file handler\n“);
      }
      
      exit(1);      
  }
  
  int r = fclose(fp);

  if (r == EOF) {
      fprintf(stderr “cannot close file handler\n“);
  } 
  printf(“%d\n [%#x]\n“ size data);
if (PtTcpSnd(cfd data size) < 0)  { 
printf(“sending on stream socket“);   
close(cfd);   
exit(0);   
}  

close(cfd);
return 0;
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2905  2015-05-22 09:07  imserver.c

     文件        348  2015-05-22 09:07  makefile

     文件       2957  2015-05-22 09:07  imclient.c

----------- ---------  ---------- -----  ----

                 6210                    3


评论

共有 条评论