Skip to content

Commit 4bec82f

Browse files
committed
history works again
1 parent 75f3419 commit 4bec82f

File tree

5 files changed

+39
-825
lines changed

5 files changed

+39
-825
lines changed

client/a.out

-48 Bytes
Binary file not shown.

client/client.c

Lines changed: 39 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
582457
int 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
}

client/from-server-a.out

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)