159 lines
2.7 KiB
C
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;
|
|
}
|
|
}
|