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

📄 client.c

📁 通过arm实现文件的上传
💻 C
字号:
#include "clienthead.h"#include "clientfunc.h"void creatconnect(const char *hostname){    struct hostent *host;    struct sockaddr_in serv_addr;    /*to openssl init*/    SSL_library_init();    OpenSSL_add_all_algorithms();    SSL_load_error_strings();    ctx=SSL_CTX_new(SSLv23_client_method());    if(ctx==NULL)      {        ERR_print_errors_fp(stdout);        exit(1);      }            if((host=gethostbyname(hostname))==NULL)      {        perror("gethostbyname error!");        exit(1);      }    if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)      {        perror("socket error!");        exit(1);      }    serv_addr.sin_family=AF_INET;    serv_addr.sin_port=htons(SERVPORT);    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("connet eroor!");        exit(1);      }    printf("rewrrew\n");    /*new one SSL */      ssl=SSL_new(ctx);    SSL_set_fd(ssl,sockfd);        /*SSL connect */    if(SSL_connect(ssl)==-1)      {        ERR_print_errors_fp(stderr);      }    else      {        printf("connect with '%s' encruption\n",SSL_get_cipher(ssl));        ShowCerts(ssl);          } }/***********send**********/void sendpackage(void){        int len;        len=(SSL_write(ssl,p,sizeof(struct proself)));        memset(buffer,0,MAXBUF);}/**********recive********/void recivepackage(void){       int len;        len=(SSL_read(ssl,buffer,MAXBUF));       printf("buffer:%s\n",buffer);}void downfiledata(FILE *fp){  int len,i=0,datalen;  while(1)    {       int fwlen;       memset(d,0,sizeof(struct downfilepackage));       len=SSL_read(ssl,d,sizeof(struct downfilepackage));       datalen=d->buflen;       memmove(buffer,d->data,datalen);       fwlen = fwrite(buffer,sizeof(char),datalen,fp);       i++;       if(i == 1)          printf("packNum:%d\n",d->baoshu);       if(i==d->baoshu)         break;    }    memset(buffer,0,MAXBUF);}/**********register********/int callregister(const char *name,const char *password){    memset(p,0,sizeof(struct proself));    strcpy(p->Package.UserInfo.uname,name);    strcpy(p->Package.UserInfo.upswd,password);    p->cmd=7;    p->num=1;    sendpackage();    recivepackage();    return strcmp(buffer,"ok"); }/**********login**********/int login(const char *name,const char *password){    memset(p,0,sizeof(struct proself));    strcpy(p->Package.UserInfo.uname,name);    strcpy(p->Package.UserInfo.upswd,password);    p->cmd=1;    p->num=1;    sendpackage();    recivepackage();    int isok = strcmp("ok",buffer);//验证成功返回0    memset(buffer,0,MAXBUF);    memset(p,0,sizeof(struct proself));    if(isok)        isok = 1;    return isok; }/**********delete*********/void deletefile(const char *name){   strcpy(p->Package.DelInfo.delname,name);   p->cmd=2;   p->num=1;   sendpackage();      recivepackage();}/**********rename********/void renamefile(const char *newname,const char *oldname){  strcpy(p->Package.ReInfo.rename,newname);  strcpy(p->Package.ReInfo.formername,oldname);  p->cmd=3;  p->num=1;  sendpackage();  recivepackage();} /********downfile********/void downfile(const char *name,const char *fileSavePath){  int len;  FILE *fp;  char realname[30];  strcpy(p->Package.DownInfo.dfile,name);  p->cmd=4;  p->num=1;  sendpackage();  sprintf(realname,"%s/%s",fileSavePath,name);  fp = fopen(realname,"wb");  printf("*******Start download %s*******\n",name);  downfiledata(fp);  printf("*******end download %s*******\n",name);  fclose(fp);}/**********upfile**********/void upfile(const char *filename, const char *filepath,int upStat){    FILE *fp;    int baoshu=0;    unsigned  int filelen;    int rc;    time_t now;    memset(p,0,sizeof(struct proself));        strcpy(p->Package.UpInfo.fname,filename);    printf("*******Upload file:%s*******\n",filename);    struct stat filebuf;    stat(filepath,&filebuf);    filelen=filebuf.st_size;    p->cmd=5;    p->num=1;    p->Package.UpInfo.upstat=upStat;    p->Package.UpInfo.fsize=filelen;    baoshu=filelen/MAXBUF;    if(filelen%MAXBUF!=0)        baoshu+=1;    p->num=baoshu;    printf("packNum:%d\n",p->num);     time(&now);    struct tm *tmp = localtime(&now);    sprintf(p->Package.UpInfo.fdate,"0%d-%d-%d",tmp->tm_year%100,tmp->tm_mon,tmp->tm_mday);            fp = fopen(filepath,"rb");    while((rc = fread(buffer,sizeof(char),MAXBUF,fp))!= 0)    {        p->Package.UpInfo.rc=rc;        memmove(p->Package.UpInfo.data,buffer,rc);        sendpackage();        memset(buffer, 0 , MAXBUF);     }    recivepackage();    printf("*******Upload file end:%s*******\n",filename);    fclose(fp);}/*********listReload*******/void listReload(){    p->cmd = 6;    p->num = 1;    sendpackage();    int afd,wlen;    afd = open("liststring.dat",O_CREAT | O_WRONLY,777);    printf("*******reload list*******\n");    while(1)    {        recivepackage();        if (strlen(buffer) == 0)            break;        write(afd,buffer,strlen(buffer));        if (strlen(buffer) < MAXBUF)        {            memset(buffer,0,MAXBUF);            break;        }        memset(buffer,0,MAXBUF);    }    }/***********close********/void closeconnect(void){    close (sockfd);    SSL_shutdown(ssl);    SSL_free(ssl);    SSL_CTX_free(ctx);}

⌨️ 快捷键说明

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