net-server/server/func/trans_server.c
2023-12-27 15:16:56 +08:00

101 lines
1.7 KiB
C

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;
}