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

159 lines
2.7 KiB
C

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