void trans_server(){ char a; //client get or send or quit recv(sockad,&a,1,0); for(;a!='Q'&&a!='q';){ if(a=='S'||a=='s'){ trans_s_get(); } else if(a=='G'||a=='g'){ trans_s_send(); } recv(sockad,&a,1,0); } printf("exit trans_server\n"); } void trans_s_get(){ printf("trans_get is running\n"); FILE *f; char *name; char *s; int i; int sock_status; char a; char *num_send; int num_sen; a='a'; num_send=(char *)malloc(4*sizeof(char)); name=(char *)malloc(sizeof(char)*128); s=(char *)malloc(sizeof(char)*1024); int num_name; memset(name,0,128*sizeof(char)); memset(s,0,1024*sizeof(char)); sock_status=recv(sockad,name,128,0); for(;sock_status<0;){ sock_status=recv(sockad,name,128,0); } printf("get name : %s\n",name); f=fopen(name,"w+"); printf("opening text\n"); for(;a!='Q';){ sock_status=recv(sockad,num_send,4,0); for(;sock_status<0;){ sock_status=recv(sockad,num_send,4,0); } num_sen=char_to_int(num_send); sock_status=recv(sockad,s,num_sen,0); for(;sock_status<0;){ sock_status=recv(sockad,s,num_sen,0); } sock_status=recv(sockad,&a,1,0); for(;sock_status<0;){ sock_status=recv(sockad,&a,1,0); } printf("get this chars:%s\n",s); printf("get a: %c\n",a); fprintf(f,"%s",s); memset(s,0,1024*sizeof(char)); } printf("write done\n"); free(name); free(s); fclose(f); printf("exit trans\n"); } void trans_s_send(){ char *name; name=(char *)malloc(sizeof(char)*128); int num_name; memset(name,0,128*sizeof(char)); num_name=recv(sockad,name,128,0); free(name); } int char_to_int(char *num_send){ int i; int a; int m; int d; int s=0; for(i=0;i<4;i++){ a=3-i; for(d=1;a>0;a--){ d=d*10; } m=num_send[i]-48; s=s+m*d; } return s; }