void* display_func(void) { int i, j, error; char message_buffer[LENGHT_MESSAGE], message_buffer_2[LENGHT_MESSAGE]; char filename[LENGHT_MESSAGE]; char confirm_file[LENGHT_MESSAGE]; FILE *fp; while (state == 0) { if (recieve_data(LENGHT_MESSAGE, message_buffer) == 0) draw_new(global_display, "system>> recieve error"); //draw_new(global_display, message_buffer); if (message_buffer[0] == '0') { split_str(1, strlen(message_buffer), message_buffer, message_buffer_2); draw_new(global_display, message_buffer_2); } else if (message_buffer[0] == '1') { //do nothing } else if (message_buffer[0] == '2') { split_str(27, strlen(message_buffer) - 2, message_buffer, message_buffer_2); strcpy(username, message_buffer_2); split_str(1, strlen(message_buffer), message_buffer, message_buffer_2); draw_new(global_display, message_buffer_2); } else if (message_buffer[0] == '3') { split_str(1, strlen(message_buffer), message_buffer, message_buffer_2); draw_new(global_display, message_buffer_2); split_str(31, strlen(message_buffer) - 1, message_buffer, filename); sprintf(message_buffer_2, "downloaded/%s", filename); fp = fopen(message_buffer_2, "w+"); error = 1; do { recieve_file(message_buffer); fprintf(fp, "%c", message_buffer[1]); }while(message_buffer[0] != '5'); fclose(fp); draw_new(global_display, "system>> Downloaded file success."); } //Reset value in message_buffer for check while loop's condition strcpy(message_buffer, ""); strcpy(message_buffer_2, ""); } return 0; }
HDTBReturnItem NetworkClient::processRequest(std::vector<std::string> args) { /* std::cout << "ARGUMENTS IN" << std::endl; for(std::vector<std::string>::iterator it = args.begin(); it != args.end(); ++it) { std::cout << "ARG :" << *it << std::endl; } */ history.push(args); // Make sure command exists if(commands.find(args[0]) == commands.end()) { // Call to super class displayAvailableCommands(); for(std::vector<std::string>::iterator it = args.begin(); it != args.end(); ++it) { std::cout << "ARG :" << *it << std::endl; } return errorHandler.generateGenericError("Unknown command"); } //Handle command int c = 0; switch(commands[args[0]]) { case HDTB_CLIENT_LOAD: if (args.size() != 3) { std::cout << " CLIENT_LOAD " << std::endl; return HDTBReturnItem(HDTB_RETURN_BAD, "not enough args -setinfo <<"); } // Make sure port is int if( !( c = atoi(args[2].c_str())) ) return HDTBReturnItem(HDTB_RETURN_BAD, "invalid port"); return setConnectionInfo(args[1], c); break; case HDTB_CLIENT_SEND: { if (args.size() != 2) return HDTBReturnItem(HDTB_RETURN_BAD, "not enough args -fsend"); HDTBReturnItem t = send(args[2]); if(t.retCode == HDTB_RETURN_GOOD) { if(recieve_data()) { std::cout << "\t Recieved data back from " << connectionInfo.address << std::endl; t.message = statusInfo.data_received; t.comm = 'R'; } else { std::cout << "\t Didn't recieve any data back from " << connectionInfo.address << std::endl; t.comm = 'N'; } return t; } else return t; return send(args[2]); break; } case HDTB_CLIENT_COMM: return initiateComms(); break; case HDTB_CLIENT_BLIND_COMM: return initiateBlindComms(); break; case HDTB_NETWORK_CMD_KILL: return kill(); break; default: return errorHandler.generateGenericError("Default accessed in command switch"); break; } return errorHandler.generateGenericError("Uncaught return"); }