diff --git a/client/func/runtime_call.c b/client/func/runtime_call.c index 5439963..eb50910 100644 --- a/client/func/runtime_call.c +++ b/client/func/runtime_call.c @@ -1,7 +1,8 @@ void runtime_call(){ char a; + char b; printf("input connection mode\n"); - scanf("%c",&a); + scanf("%c%c",&a,&b); for(;a!='q';){ if(a=='1'){ //sync @@ -9,12 +10,13 @@ void runtime_call(){ } else if(a=='2'){ //trans + trans_client(); } else if(a=='3'){ //http } printf("input connection mode again\n"); - scanf("%c",&a); + scanf("%c%c",&a,&b); } send(sockad,&a,1,0); } diff --git a/client/func/sync_client.c b/client/func/sync_client.c index f001b7d..a2e65fa 100644 --- a/client/func/sync_client.c +++ b/client/func/sync_client.c @@ -5,15 +5,13 @@ void sync_client(){ send(sockad,&a,1,0); char *s; s=(char *)malloc(1024*sizeof(char)); - scanf("%c",&a); num=sync_get(s); for(;;){ send(sockad,s,num,0); printf("keep or not?[Y/N]\n"); - scanf("%c",&a); - scanf("%c",&b); + scanf("%c%c",&a,&b); send(sockad,&a,1,0); - if(a=='N'|a=='n'){ + if(a=='N'||a=='n'){ break; } num=sync_get(s); diff --git a/client/func/trans_client.c b/client/func/trans_client.c new file mode 100644 index 0000000..e0f90d2 --- /dev/null +++ b/client/func/trans_client.c @@ -0,0 +1,69 @@ +void trans_client(){ + char a='2'; + send(sockad,&a,1,0); + char b; + + printf("send or get or quit?[S/G/Q]\n"); + scanf("%c%c",&a,&b); + send(sockad,&a,1,0); + + + for(;a!='Q'&&a!='q';){ + if(a=='S'||a=='s'){ + trans_c_send(name); + } + else if(a=='G'||a=='g'){ + trans_c_get(name); + } + + printf("send or get or quit?[S/G/Q]\n"); + scanf("%c%c",&a,&b); + send(sockad,&a,1,0); + + + } + + +} + +void trans_c_send(char *name){ + char *name; + name=(char *)malloc(sizeof(char)*128); + 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 trans_c_get(char *name){ + char *name; + name=(char *)malloc(sizeof(char)*128); + 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 itc(int num_name,char *num_name_char){ + int a; + int i; + int m; + for(i=0;i<3;i++){ + m=2-i; + m=(int)pow(10,m); + a=num_name/m; + num_name=num_name-a*m; + num_name_char[i]=a+48; + } +} +*/ diff --git a/client/inclu.h b/client/inclu.h index b14aca3..935467a 100644 --- a/client/inclu.h +++ b/client/inclu.h @@ -1,13 +1,16 @@ #include #include -#include -#include #include #include + +#include +#include #include + #include "def.h" + #include "func/init_con.c" #include "func/runtime_call.c" #include "func/sync_client.c" diff --git a/server/func/runtime_call.c b/server/func/runtime_call.c index 00b8ff5..61f582a 100644 --- a/server/func/runtime_call.c +++ b/server/func/runtime_call.c @@ -9,6 +9,7 @@ void runtime_call(){ } else if(a=='2'){ //trans + trans_server(); } else if(a=='3'){ //http diff --git a/server/func/sync_server.c b/server/func/sync_server.c index 2bc620b..44768ff 100644 --- a/server/func/sync_server.c +++ b/server/func/sync_server.c @@ -9,7 +9,7 @@ void sync_server(){ s[num]='\0'; printf("get chars:%s\n",s); recv(sockad,&a,1,0); - if(a=='N'|a=='n'){ + if(a=='N'||a=='n'){ break; } memset(s,0,1024*sizeof(char)); diff --git a/server/func/trans_server.c b/server/func/trans_server.c new file mode 100644 index 0000000..dcf6c90 --- /dev/null +++ b/server/func/trans_server.c @@ -0,0 +1,36 @@ +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); + } +} + +void trans_s_get(){ + 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); + +} + +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); + +} diff --git a/server/inclu.h b/server/inclu.h index 75b3ddf..d5efb5d 100644 --- a/server/inclu.h +++ b/server/inclu.h @@ -1,10 +1,12 @@ #include #include -#include -#include #include #include + #include +#include +#include + #include "def.h" diff --git a/test/n b/test/n new file mode 100755 index 0000000..ed0698e Binary files /dev/null and b/test/n differ diff --git a/test/name.c b/test/name.c new file mode 100644 index 0000000..3c529ff --- /dev/null +++ b/test/name.c @@ -0,0 +1,15 @@ +#include +#include +#include + +int main(){ + char *name; + int b; + name=(char *)malloc(128*sizeof(char)); + memset(name,0,128*sizeof(char)); + scanf("%s",name); + b=strlen(name); + printf("%d",name[4]); + printf("\nnum:%d",b); + return 0; +}