void trans_client(){ char a; a='2'; send(sockad,&a,1,0); char b; printf("send or get or quit?[S/G/Q]\n"); scanf("%c",&a); printf("a is %c\n",a); send(sockad,&a,1,0); for(;a!='Q'&&a!='q';){ if(a=='S'||a=='s'){ trans_c_send(); } else if(a=='G'||a=='g'){ trans_c_get(); } scanf("%c",&b); printf("send or get or quit?[S/G/Q]\n"); scanf("%c",&a); scanf("%c",&b); send(sockad,&a,1,0); printf("a is %c\n",a); } } void trans_c_send(){ printf("trans_c_send is running\n"); char *name; char *s; int num_name; FILE *f; int num_text=0; char *num_send; char a; char b; int sock_status; name=(char *)malloc(sizeof(char)*128); s=(char *)malloc(1024*sizeof(char)); num_send=(char *)malloc(4*sizeof(char)); memset(name,0,128*sizeof(char)); memset(s,0,1024*sizeof(char)); printf("input the name of file:"); scanf("%s",name); num_name=strlen(name); sock_status=send(sockad,name,num_name,0); for(;sock_status<0;){ sock_status=send(sockad,name,num_name,0); } f=fopen(name,"r+"); a=fgetc(f); printf("opening file\n"); for(;a!=EOF;){ *(s+num_text)=a; num_text++; a=fgetc(f); if(a==EOF){ int_to_char(num_text,num_send); b='Q'; sock_status=send(sockad,num_send,4,0); for(;sock_status<0;){ sock_status=send(sockad,num_send,4,0); } sock_status=send(sockad,s,num_text,0); for(;sock_status<0;){ sock_status=send(sockad,s,num_text,0); } printf("sock_status is %d\n",sock_status); sock_status=send(sockad,&b,1,0); for(;sock_status<0;){ sock_status=send(sockad,&b,1,0); } printf("sock_status is %d\n",sock_status); printf("sending %s\n",s); printf("sending %c\n",b); } else if(num_text==1024){ b='A'; int_to_char(num_text,num_send); sock_status=send(sockad,num_send,4,0); for(;sock_status<0;){ sock_status=send(sockad,num_send,4,0); } sock_status=send(sockad,s,num_text,0); for(;sock_status<0;){ sock_status=send(sockad,s,num_text,0); } sock_status=send(sockad,&b,1,0); for(;sock_status<0;){ sock_status=send(sockad,&b,1,0); } printf("sending %s\n",s); printf("sending %c\n",b); memset(s,0,1024*sizeof(char)); num_text=0; } } fclose(f); free(s); free(name); free(num_send); printf("exit trans\n"); } void trans_c_get(){ char *name; char *s; name=(char *)malloc(sizeof(char)*128); s=(char *)malloc(1024*sizeof(char)); int num_name; memset(name,0,128*sizeof(char)); printf("input the name of file:"); scanf("%s",name); num_name=strlen(name); send(sockad,name,num_name,0); free(name); } void int_to_char(int num_text,char *num_send){ int a; int i; int m; int d; for(i=0;i<4;i++){ m=3-i; for(d=1;m>0;){ d=d*10; m--; } m=d; a=num_text/m; num_text=num_text-a*m; num_send[i]=a+48; } }