int enviaNomeComando(conexao *conn,char *comando){ byte *dados; size_t tamanho, restantes; Pacote p; if (!existeArquivo(comando)) return 0; tamanho = strlen(comando); dados = (byte *)comando; if(tamanho <= MAX_TAM_DADOS){ if (strstr (comando, "get ") != NULL) criaPacote(&p,tamanho,G,dados); if (strstr (comando, "put ") != NULL) criaPacote(&p,tamanho,P,dados); if (strstr (comando, "cd ") != NULL) criaPacote(&p,tamanho,C,dados); if (strstr (comando, "ls") != NULL) //criaPacote(&p,tamanho,L,(byte*)'0'); criaPacote(&p,tamanho,L,dados); }else{ printf ("Tamanho do comando muito grande!!\n"); return 0; } if (enviaPacote(conn,&p) == 0) return -1; return 1; }
int requisita(conexao *conn) { //prompt do cliente int i, num_vets; char *comando, c; Pacote p; int loop =1; comando=(char *)malloc(TAM_VET*sizeof(char)); while(loop){ printf("ftp >> "); num_vets=1;//numero de alocacoes c=getchar(); while(isspace(c)) //elimina espaços a esquerda do comando c=getchar(); i=0; while(c != '\n'){//le comando if(i >= TAM_VET * num_vets){ //realoca string se o comando for maior q TAM_VET num_vets++; comando=(char*)realloc(comando,num_vets * TAM_VET * sizeof(char)); } comando[i]=c; i++; c=getchar(); } comando[i]='\0'; if (strstr(comando,"exit") != NULL){ loop=0; criaPacote(&p,0,S,NULL); enviaPacote (conn, &p); } else { if((strstr (comando, "lcd ") != NULL) || (strstr (comando, "lls") != NULL)){ executaComandoLocal(comando); } else if ((strstr (comando, "get ") != NULL) || (strstr (comando, "put ") != NULL) || (strstr (comando, "ls") != NULL) || (strstr (comando, "cd ") != NULL)) { executaComandoRemoto(conn,comando); zeraSequencia(); } else printf ("Comando nao disponivel!!\n"); } } return 1; }
int main(){ int i=0,contador=0; PACOTE *PE,*aux; PACOTE *saida; srand(time(NULL)); saida=NULL; PE=NULL; while(contador<4){ i=rand()%3; PE=inserePacoteLista(PE,criaPacote(i)); //saida=escalonador(PE[0]); //printf("\n%d\n",PE->enderecoIP); //puts(PE->protocolo); contador++; } aux=PE; printf("conferindo se ouve insercao dos pacotes na lista de Entrada\n"); while(aux!=NULL){ printf("\n%d\n",aux->enderecoIP); puts(aux->protocolo); aux=aux->prox; } printf("\n\\-----------------------------------------------\\"); printf("\n\n"); printf("pacote processado e recebido na saida \n"); saida=escalonador(PE); printf("saida\n"); printf("%d\n",saida->enderecoIP); puts(saida->protocolo); printf("\n\\-----------------------------------------------\\\n"); printf("Lista de Entrada depois da remoção do pacote \n"); aux=PE; while(aux!=NULL){ printf("\n%d\n",aux->enderecoIP); puts(aux->protocolo); aux=aux->prox; } printf("\n\\-----------------------------------------------\\"); getchar(); return 0; }