main(int argc, char *argv[]) { ValidRunCmd(argc, argv); ValidRepeatedArgs(argc, argv); ValidArgs(argc, argv); FixEqualsArgs(argc, argv); switch (optionsHandler(argc, argv)) { case 1: CodeCount(argv, 1); break; //Comment e Silent (Conta também as linhas de comentário e grava em arquivo). case 2: CodeCount(argv, 2); break; //Comment (Conta também as linhas de comentário). case 3: CodeCount(argv, 3); break; //Silent (grava em arquivo com modo padrão). default: CodeCount(argv, 0); //Modo padrão. } }
void ValidRunCmd(int argc, char *program[]) { //Verifica se foi informado nome/caminho do arquivo. if (argc < 2) { CodeCountError(program[0], "RUN_INIT"); } else { if ((argc == 2) && (strcmp(program[1],"-h")==0 || strcmp(program[1],"-help")==0)) { ShowHelp(); } else { if (argc > 2) { ValidArgs(argc, program); } } } }
int main(int argc, char** argv) { int socketDescriptor, port; struct hostent *hp; struct sockaddr_in server; char *host, **pptr;//, *bp, rbuf[BUFFER_LENGTH], **pptr, *sptr; std::string request_type, filePath; char str[16]; switch(argc) { case 4: request_type = argv[1]; filePath = argv[2]; host = argv[3]; // Host name port = SERVER_TCP_PORT; break; case 5: request_type = argv[1]; filePath = argv[2]; host = argv[3]; port = atoi(argv[4]); // User specified port break; default: std::cout << "Usage: " << argv[0] << " (GET/SEND) FilePath host [port]" << std::endl; exit(1); } boost::to_upper(request_type);//Changes request_type to upper case for consistency if(ValidArgs(request_type) == false)//Checks for valid args { std::cout << "Invalid arguments" << std::endl; exit(1); } //Creating socket socketDescriptor = socket(AF_INET, SOCK_STREAM, 0); // Creates socket descriptor if (socketDescriptor == -1) //Checks if creating the socket failed { std::cerr << "Cannot create socket" << std::endl; exit(1); } bzero((char *)&server, sizeof(struct sockaddr_in)); server.sin_family = AF_INET; server.sin_port = htons(port); if ((hp = gethostbyname(host)) == NULL) { std::cerr << "Unknown server address" << std::endl; exit(1); } bcopy(hp->h_addr, (char *)&server.sin_addr, hp->h_length); // Connecting to the server if (connect (socketDescriptor, (struct sockaddr *)&server, sizeof(server)) == -1) { std::cout << "Can't connect to server" << std::endl; std::cerr << "connect"; exit(1); } std::cout << "Connected:\nServer Name: " << hp->h_name << std::endl; pptr = hp->h_addr_list; std::cout << "IP Address: " << inet_ntop(hp->h_addrtype, *pptr, str, sizeof(str)) << std::endl; std::cout << "Transmit: " << filePath << "\nRequest Type: " << request_type << std::endl; if(request_type.compare(SEND_REQUEST_STRING) == 0) //SEND request { sendFile(filePath, socketDescriptor); } else if(request_type.compare(GET_REQUEST_STRING) == 0) // GET request { getFile(filePath, socketDescriptor); } else //Error, not request type { std::cout << "Error on request type" << std::endl; } return 0; }