Ejemplo n.º 1
0
int main(){
    Tdados f;

    f = lerdados();
    emailfuncionario(f);

    printf("\n");
    system ("pause");
    return 0;
}
Ejemplo n.º 2
0
//Recebe as tramas de dados e responde RR
int transfDados(int fd, char* buffer, char* data, int filesize)
{
	char dados[15000];
	int res=0,i, a=0;
	int pointer=0;
	char nr,cns,cnr;
	nr=0x0;
	cns=0x0;
	cnr=0x5;
	int isValid = FALSE, next = FALSE;

	while(next!=TRUE)
	{
		isValid = checkI(buffer,cns);

		if(isValid==TRUE)
		{
			getData(buffer,data);
			if (data[0]==1)
			{
				printf("Recebida trama de controlo de dados (start)\n");
				char fsize[data[2]];
				while(a<data[2])
				{
					fsize[a]=data[a+3];
					a++;
				}
				filesize = atoi(fsize);
				a=0;
				while(a<=data[4+data[2]])
				{
					filename[a]=data[4+data[2]+a];
					//printf("%c",filename[a]);
					a++;
				}
				filename[a]='\0';
			}
			else if(data[0]==0)
			{
				pointer = lerdados(data,dados,pointer);
				printf("A escrever dados na posicao %d de um total de %d\n",pointer,filesize);
			}
			else if(data[0]==2)
			{
				printf("Recebida trama de controlo de dados (end)\n");
				/*if(filesize!=(data[3]))
				{
					printf("Dados corrompidos, tamanho do ficheiro nao e valido.%d\n",data[3]);
					exit(1);
				}
				if(filename!=data[6])
				{
					printf("Dados corrompidos. Impossivel terminar.\n");
					exit(1);
				}*/
			}
			else
			{
				printf("Trama de dados corrompida.\n");
			}
			//Verifica o valor do N(r) anterior para o poder alterar
			if(nr==0x1){
				nr=0x0;
				cns=0x0;
				cnr=0x5;
			}
			else{
				nr=0x1;
				cns=0x2;
				cnr=0x25;
			}
			writeRR(fd,cnr);//Escreve o RR de resposta que permite ao Sender identificar se enviou o I bem ou necessita de enviar outra vez
		}
		else
		{

			next = checkDISC(buffer);
			if(next==FALSE)
			{
				writeRR(fd,cnr);
			}
			else{
				for(i=0; i<filesize; i++){
					data[i] = dados[i];
				}
				return filesize;
			}
		}
		llread(fd,buffer);
	}
}