@@ -387,7 +387,7 @@ int _get(int sockfd, int datafd, char *input){
387387 sprintf (str , "RETR %s" , filename );
388388 }
389389 printf ("File: %s\n" , filename );
390- sprintf (temp1 , "from-server -%s" , filename );
390+ sprintf (temp1 , "out -%s" , filename );
391391 memset (filename , '\0' , (int )sizeof (filename ));
392392
393393
@@ -454,134 +454,9 @@ int _get(int sockfd, int datafd, char *input){
454454 return 1 ;
455455}
456456
457- // int main(int argc, char **argv){
458-
459- // int server_port;
460- // int sockfd, listenfd, datafd;
461- // int cmd_code, n5, n6, x;
462- // u16 port;
463- // struct sockaddr_in server_addr, data_addr;
464- // char command[1024], ip[50], str[MAXLINE+1];
465-
466- // if(argc != 3){
467- // printf(RED "Invalid number of arguments. Please follow the format.\n");
468- // printf("Format: ./client <server-ip> <server-port>\n" RESET);
469- // exit(-1);
470- // }
471-
472- // //get server port
473- // sscanf(argv[2], "%d", &server_port); // store argv[2] into server_port
474-
475- // //set up control connection using sockfd as control socket descriptor
476- // if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){
477- // perror("socket connection error occured\n");
478- // exit(-1);
479- // }
480-
481- // memset(&server_addr, '\0', sizeof(server_addr));
482- // server_addr.sin_family = AF_INET; // address family -> trivially, we use AF_INET.
483- // server_addr.sin_port = htons(server_port); // 16 bit port no, conv from network to host byte order
484-
485- // // convert host addr into AF_INET addr family as store in server_addr.sin_addr
486- // if (inet_pton(AF_INET, argv[1], &server_addr.sin_addr) != 1){
487- // // conversion successful only if inet_pton returns 1
488- // perror("inet_pton error. Could not parse host address.");
489- // exit(-1);
490- // }
491-
492- // // connect socket ref by sockfd to server_addr (address and port sprecified)
493- // if (connect(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr)) < 0){
494- // perror("connection error occured.\n");
495- // exit(-1);
496- // }
497-
498-
499- // // set up data connection
500- // listenfd = socket(AF_INET, SOCK_STREAM, 0); // TCP(SOCK_STREAM) will only break connection when one party exits or network error occurs
501-
502- // memset(&data_addr, '\0', sizeof(data_addr));
503- // data_addr.sin_family = AF_INET;
504- // data_addr.sin_addr.s_addr = htonl(INADDR_ANY);
505- // data_addr.sin_port = htons(0);
506-
507- // // bind socket to the data_addr port
508- // bind(listenfd, (struct sockaddr*) &data_addr, sizeof(data_addr));
509-
510- // // listen for connections on socket
511- // listen(listenfd, BACKLOGS); // max pending connections
512-
513- // // get ip address from control port
514- // get_ip_port(sockfd, ip, (int *)&x);
515-
516- // // x = 0;
517- // // printf(YEL "x: %d\n", x);
518- // printf(YEL "ip: %s\n" RESET, ip);
519- // //get data connection port from listenfd
520- // get_ip_port(listenfd, str, (int *)&port);
521-
522- // printf(YEL "Port: %d\n" RESET, port);
523- // printf(YEL "str: %s\n" RESET, str);
524- // convert(port, &n5, &n6);
525-
526- // while(1){
527-
528- // memset(command, '\0', strlen(command));
529-
530- // // get prompt
531- // cmd_code = get_cmd_code(command);
532-
533- // // case: quit
534- // if(cmd_code == 4){
535- // char quit[100];
536- // sprintf(quit, "QUIT");
537- // write(sockfd, quit, strlen(quit));
538- // memset(quit, '\0', (int)sizeof(quit));
539- // read(sockfd,quit, 100);
540- // printf(CYN "Server : %s\n" RESET, quit);
541- // break;
542- // }
543-
544- // // printf("command: %s\n", command);
545-
546- // //send PORT n1,n2,n3,n4,n5,n6
547- // memset(str, '\0', (int)sizeof(str));
548- // get_port_str(str, ip, n5, n6);
549-
550- // write(sockfd, str, strlen(str));
551- // memset(str, '\0', (int)sizeof(str));
552- // datafd = accept(listenfd, (struct sockaddr*)NULL, NULL);
553-
554- // // printf(CYN "Data connection Established...\n" RESET);
555-
556- // if(cmd_code == 1)
557- // {
558- // if(_ls(sockfd, datafd, command) < 0){
559- // close(datafd);
560- // continue;
561- // }
562- // }
563- // else if(cmd_code == 2){
564- // if(_get(sockfd, datafd, command) < 0){
565- // close(datafd);
566- // continue;
567- // }
568- // }
569- // else if(cmd_code == 5){
570- // if(_history(sockfd, datafd, command) < 0){
571- // close(datafd);
572- // continue;
573- // }
574- // }
575- // close(datafd);
576- // }
577- // close(sockfd);
578- // return TRUE;
579- // }
580-
581-
582457int main (int argc , char * * argv ){
583458
584- int server_port , controlfd , listenfd , datafd , code , n5 , n6 , x = rand ()% 10000 ;
459+ int server_port , sockfd , listenfd , datafd , code , n5 , n6 , x ;
585460 uint16_t port ;
586461 struct sockaddr_in servaddr , data_addr ;
587462 char command [1024 ], ip [50 ], str [MAXLINE + 1 ];
@@ -594,101 +469,106 @@ int main(int argc, char **argv){
594469 }
595470
596471 //get server port
597- sscanf (argv [2 ], "%d" , & server_port );
472+ sscanf (argv [2 ], "%d" , & server_port ); // store argv[2] into server_port
598473
599- //set up control connection--------------------------------------------------
600- if ( (controlfd = socket (AF_INET , SOCK_STREAM , 0 )) < 0 ){
601- perror ("socket error" );
474+ //set up control connection using sockfd as control socket descriptor
475+ if ( (sockfd = socket (AF_INET , SOCK_STREAM , 0 )) < 0 ){
476+ perror ("socket connection error occured\n " );
602477 exit (-1 );
603478 }
604479
605- bzero (& servaddr , sizeof (servaddr ));
606- servaddr .sin_family = AF_INET ;
607- servaddr .sin_port = htons (server_port );
480+ memset (& servaddr , '\0' , (int )sizeof (servaddr ));
481+ servaddr .sin_family = AF_INET ; // address family -> trivially, we use AF_INET.
482+ servaddr .sin_port = htons (server_port ); // 16 bit port no, conv from network to host byte order
483+
484+ // convert host addr into AF_INET addr family as store in server_addr.sin_addr
608485 if (inet_pton (AF_INET , argv [1 ], & servaddr .sin_addr ) <= 0 ){
609- perror ("inet_pton error" );
486+ // conversion successful only if inet_pton returns 1
487+ perror ("inet_pton error. Could not parse host address." );
610488 exit (-1 );
611489 }
612490
613- if (connect (controlfd , (struct sockaddr * ) & servaddr , sizeof (servaddr )) < 0 ){
614- perror ("connect error" );
491+ if (connect (sockfd , (struct sockaddr * ) & servaddr , sizeof (servaddr )) < 0 ){
492+ perror ("connection error occured.\n " );
615493 exit (-1 );
616494 }
617495
618496
619- //set up data connection------------------------------------------------------
620- listenfd = socket (AF_INET , SOCK_STREAM , 0 );
497+ // set up data connection
498+ listenfd = socket (AF_INET , SOCK_STREAM , 0 ); // TCP(SOCK_STREAM) will only break connection when one party exits or network error occurs
621499
622- bzero (& data_addr , sizeof (data_addr ));
500+ memset (& data_addr , '\0' , sizeof (data_addr ));
623501 data_addr .sin_family = AF_INET ;
624502 data_addr .sin_addr .s_addr = htonl (INADDR_ANY );
625503 data_addr .sin_port = htons (0 );
626504
505+ // bind socket to the data_addr port
627506 bind (listenfd , (struct sockaddr * ) & data_addr , sizeof (data_addr ));
628507
508+ // listen for connections on socket
629509 listen (listenfd , BACKLOGS );
630510
631- //get ip address from control port
632- get_ip_port (controlfd , ip , (int * )& x );
633- //x = 0;
511+ // get ip address from control port
512+ get_ip_port (sockfd , ip , (int * )& x );
634513 // printf("x: %d\n", x);
635514 printf (YEL "ip: %s\n" RESET , ip );
636515 //get data connection port from listenfd
637516 get_ip_port (listenfd , str , (int * )& port );
638517
639518 printf (YEL "Port: %d\n" RESET , port );
640-
519+ printf ( YEL "str: %s\n" RESET , str );
641520 convert (port , & n5 , & n6 );
642521
643522 while (1 ){
644523
645- bzero (command , strlen (command ));
646- //get command from user
524+ memset (command , '\0' , strlen (command ));
525+
526+ // get prompt
647527 code = get_cmd_code (command );
648528
649- //user has entered quit
529+ // case: quit
650530 if (code == 4 ){
651531 char quit [1024 ];
652532 sprintf (quit , "QUIT" );
653- write (controlfd , quit , strlen (quit ));
654- bzero (quit , (int )sizeof (quit ));
655- read (controlfd ,quit , 1024 );
656- printf ("Server Response : %s\n" , quit );
533+ write (sockfd , quit , strlen (quit ));
534+ memset (quit , '\0' , (int )sizeof (quit ));
535+ read (sockfd ,quit , 1024 );
536+ printf (CYN "Server : %s\n" RESET , quit );
657537 break ;
658538 }
659539 // printf("command: %s\n", command);
660540
661541 //send PORT n1,n2,n3,n4,n5,n6
662- bzero (str , (int )sizeof (str ));
542+ memset (str , '\0' , (int )sizeof (str ));
663543 get_port_str (str , ip , n5 , n6 );
664544
665- write (controlfd , str , strlen (str ));
666- bzero (str , (int )sizeof (str ));
545+ write (sockfd , str , strlen (str ));
546+ memset (str , '\0' , (int )sizeof (str ));
667547 datafd = accept (listenfd , (struct sockaddr * )NULL , NULL );
668548
669- printf ("Data connection Established...\n" );
549+ // printf("Data connection Established...\n");
670550
671551 if (code == 1 )
672552 {
673- if (_ls (controlfd , datafd , command ) < 0 ){
553+ if (_ls (sockfd , datafd , command ) < 0 ){
674554 close (datafd );
675555 continue ;
676556 }
677557 }
678558 else if (code == 2 ){
679- if (_get (controlfd , datafd , command ) < 0 ){
559+ if (_get (sockfd , datafd , command ) < 0 ){
680560 close (datafd );
681561 continue ;
682562 }
683563 }
684564 else if (code == 5 ){
685- if (_history (controlfd , datafd , command ) < 0 ){
565+ if (_history (sockfd , datafd , command ) < 0 ){
686566 close (datafd );
687567 continue ;
688568 }
689569 }
690570 close (datafd );
691571 }
692- close (controlfd );
572+ close (sockfd );
693573 return TRUE;
694574}
0 commit comments