Exemplo n.º 1
0
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.
	}
}
Exemplo n.º 2
0
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;
}