void client_send_receive_command() { int n; int break_while=0; char r_w_buffer[1024]; int file_flag=0; printf("Please enter the message:"); bzero(r_w_buffer,256); if(strcmp(r_w_buffer,"BYE")==0) exit(1); scanf("%*c%[^\n]",r_w_buffer); n = write(sockfd, r_w_buffer, strlen(r_w_buffer)); char buffer[1024]; strcpy(buffer,r_w_buffer); if (strstr(buffer, "FileDownload") != NULL) { break_while=1; // file_download(); char *pch; char buffer_backup[1024],file_path[1024]; strcpy(buffer_backup, buffer); pch = strtok (buffer_backup, " "); pch = strtok(NULL, " "); pch = strtok (pch, "\n"); strcpy(file_path,CLIENT); strcat(file_path,pch); printf("%s\n",file_path); printf("Waiting for Server to provide Permission\n"); char r_w_buffer[1024]; read(sockfd, r_w_buffer, 1); if(r_w_buffer[0]=='y') { printf("Downloading.. for you\n"); client_receive_file(file_path); } else { printf("Download denied\n"); } } else if (strstr(buffer, "FileUpload") != NULL) { break_while=1; printf("buffer=%s\n",buffer); char *pch; char buffer_backup[1024],file_path[1024]; strcpy(buffer_backup, buffer); pch = strtok (buffer_backup, " "); pch = strtok(NULL, " "); pch = strtok (pch, "\n"); strcpy(file_path,CLIENT); printf("file_path=%s\n",file_path); strcat(file_path,pch); printf("file_path=%s\n",file_path); client_send_file(file_path); } if (n < 0) error("ERROR writing to socket"); bzero(r_w_buffer, 1024); while(1 && !break_while) { bzero(r_w_buffer, 1024); n = read(sockfd, r_w_buffer, 1024); if (n < 0) { break; // error("ERROR reading mach18 from socket"); } //printf("finally\n"); /* if(strcmp(r_w_buffer,"Hi\n") ==0) { file_flag=1; continue; } if(strcmp(r_w_buffer,"Done\n")==0) { file_flag=0; printf("here\n"); continue; } if(file_flag==0) { */ printf("%s ", r_w_buffer); /* } else { FILE *fptr; fptr=fopen("NewDownloaded_file","a"); fprintf(fptr,"%s\n", r_w_buffer); fclose(fptr); } */ if (strstr(r_w_buffer, "---LIST END---\n") != NULL) break; } }
int main(int argc, char **argv) { int status; char ip_addr[INET_ADDRSTRLEN]; char *service; int server_sock = -1; int exit_flag = 0; int ftp_sock = 9999; fd_set temp; /*Init. Logger*/ #ifndef MY_PC cse4589_init_log(argv[2]); #endif int sock; if(argc<3) { printf("No args\n"); return 1; } if(!validate_port(argv[2])) return 0; FD_ZERO(&wait_fd); FD_ZERO(&temp); FD_SET(0, &wait_fd); tv.tv_sec = 15; tv.tv_usec = 0; if(!strcmp(argv[1], "s")) { is_server = true; } else if(strcmp(argv[1], "c")) { printf("Usage ./sock [s/c]\n"); return 0; } set_listening_port(argv[2]); server_sock = server_start(argv[2]); if(server_sock <=0)return 0; sock = server_sock; add_fd(sock); int i =2; while(!exit_flag) { temp = wait_fd; int ret = select(active_sockets, &temp, NULL, NULL, NULL); if(ret) { if(FD_ISSET(STDIN, &temp)) { exit_flag = parse_shell(); } else if(FD_ISSET(server_sock, &temp)) { // server socket is active, check for new connections if(is_server) { int new_socket = server_accept(server_sock); add_fd(new_socket); } else { int new_socket = server_accept(server_sock); //add ftp socket add_fd(new_socket); ftp_sock = new_socket; } } else if(FD_ISSET(ftp_sock, &temp)) { client_receive_file(&ftp_sock); } else { for(int fd = 3; fd<=active_sockets; fd++) { if(FD_ISSET(fd, &temp)) { if(is_server) server_receive(fd); else client_receive(fd); } } } //End of else } //end of select handling } //end loop clear_fd(sock); close(sock); #ifndef MY_PC fclose(fopen(LOGFILE, "w")); #endif return 0; }