Skip to content
Snippets Groups Projects
Commit f2750b9d authored by Eduardo Machado's avatar Eduardo Machado
Browse files

começando a mexer no lsr

parent 26b3187e
Branches
No related tags found
No related merge requests found
......@@ -51,12 +51,11 @@ int main(int argc, char *argv[]) {
}else if(command == "cd"){
cin >> parameter;
cdMini(parameter);
}else if(command == "rcd"){
}else if(command == "cdr"){
cin >> parameter;
mainMessage.sendCD((unsigned char*)(parameter.c_str()));
}else if(command == "send"){
cin >> parameter;
send(soquete,parameter.c_str(),64, 0);
}else if(command == "lsr"){
mainMessage.sendLS((unsigned char*)(parameter.c_str()));
}
}
}else if(service == "server"){
......
......@@ -69,7 +69,7 @@ int Message::sendLS(unsigned char* options){
int error, success = 0, garbage, rv;
char *receiptMessage = (char*)malloc(sizeof(char*)*68);
struct pollfd ufds[1]; // usado para timeout em recv
char* listagem;
char *listagem, sequence[3];
SubMessage listDir, answer, ack, nack;
ufds[0].fd = soquete;
......@@ -78,7 +78,7 @@ int Message::sendLS(unsigned char* options){
listDir.setData(options,4,0);
while(!success){
error = send(soquete, listDir.objToString(), listDir.getSize()+4, 0);
error = send(soquete, listDir.objToString(), 68, 0);
if (error == -1){
cout << "Erro ao tentar listar diretorio (messages.cpp::sendLS)" << endl;
}
......@@ -92,16 +92,17 @@ int Message::sendLS(unsigned char* options){
cout << "Erro no recebimento de resposta (messages.cpp::sendLS)" << endl;
return -1;
} else {
recv(soquete, receiptMessage, 68*sizeof(char), 0);
answer.stringToObj((unsigned char*)receiptMessage);
recv(soquete, receiptMessage, 68, 0);
// Lê começo da mensagem e vê se tem o delimitador de início
if(answer.getStartMessage() == 0x7E){ // 0x7E = 01111110
if(receiptMessage[0] == 0x7E){ // 0x7E = 01111110
answer.stringToObj((unsigned char*)receiptMessage);
success = 1;
if(answer.getType() == 10){ // 10 = 0xA --> (A)mostra
// Mostra as mensagens
if(answer.checkParity()){ // Caso a paridade dê errado
nack.setData((unsigned char*)answer.getSeq(),0,0); // Manda um nack
send(soquete,nack.objToString(),nack.getSize()+4, 0);
sprintf(sequence, "%d", answer.getSeq());
nack.setData((unsigned char*)sequence,0,0); // Manda um nack
send(soquete,nack.objToString(),68, 0);
success = 0;
} else {
strcat(listagem,(char*)answer.getData()); // Põe o valor recebido em "listagem"
......@@ -109,13 +110,14 @@ int Message::sendLS(unsigned char* options){
while(!success){
rv = poll(ufds, 1, 500); // Observa por novas mensagens
if(rv){
recv(soquete, receiptMessage, 68*sizeof(char), 0);
recv(soquete, receiptMessage, 68, 0);
if(receiptMessage[0] == 0x7E){
answer.stringToObj((unsigned char*)receiptMessage);
if(answer.getStartMessage() == 0x7E){
if(answer.getType() == 10){ // 10 = 0xA --> (A)mostra
if(answer.checkParity()){ // Caso a paridade dê errado
nack.setData((unsigned char*)answer.getSeq(),0,0); // Manda um nack
send(soquete,nack.objToString(),nack.getSize()+4, 0);
sprintf(sequence, "%d", answer.getSeq());
nack.setData((unsigned char*)sequence,0,0); // Manda um nack
send(soquete,nack.objToString(),68, 0);
success = 0;
} else {
if(receiveData((unsigned char*)"ls", atoi((char*)answer.getData()), 0) == 0){
......@@ -191,7 +193,7 @@ int Message::sendPUT(unsigned char* fileName){
cout << "Erro no recebimento de resposta (messages.cpp::sendPUT)" << endl;
return -1;
} else {
recv(soquete, receiptMessage, 68*sizeof(char), 0);
recv(soquete, receiptMessage, 68, 0);
answer.stringToObj((unsigned char*)receiptMessage);
// Lê começo da mensagem e vê se tem o delimitador de início
if(answer.getStartMessage() == 0x7E){ // 0x7E = 01111110
......@@ -208,7 +210,7 @@ int Message::sendPUT(unsigned char* fileName){
cout << "Erro no recebimento de resposta (messages.cpp::sendPUT)" << endl;
return -1;
} else {
recv(soquete, receiptMessage, 68*sizeof(char), 0);
recv(soquete, receiptMessage, 68, 0);
answer.stringToObj((unsigned char*)receiptMessage);
if(answer.getStartMessage() == 0x7E){ // 0x7E = 01111110
if(answer.getType() == 8){
......@@ -281,7 +283,7 @@ int Message::sendGET(unsigned char* fileName, char* currentPath){
cout << "Erro no recebimento de resposta (messages.cpp::sendGET)" << endl;
return -1;
} else {
recv(soquete, receiptMessage, 68*sizeof(char), 0);
recv(soquete, receiptMessage, 68, 0);
answer.stringToObj((unsigned char*)receiptMessage);
// Lê começo da mensagem e vê se tem o delimitador de início
if(answer.getStartMessage() == 0x7E){ // 0x7E = 01111110
......@@ -421,7 +423,7 @@ int Message::sendData(unsigned char* stringMessage){
if(rv == -1){
cout << "Erro no recebimento de resposta (messages.cpp::sendData)" << endl;
} else {
recv(soquete, receiptMessage, 68*sizeof(char), 0);
recv(soquete, receiptMessage, 68, 0);
answer.stringToObj((unsigned char*)receiptMessage);
// Lê começo da mensagem e vê se tem o delimitador de início
if(answer.getStartMessage() == 0x7E){ // 0x7E = 01111110
......@@ -471,7 +473,7 @@ int Message::sendData(unsigned char* stringMessage){
cout << "Erro no recebimento de resposta (messages.cpp::sendData)" << endl;
return -1;
} else {
recv(soquete, receiptMessage, 68*sizeof(char), 0);
recv(soquete, receiptMessage, 68, 0);
answer.stringToObj((unsigned char*)receiptMessage);
// Lê começo da mensagem e vê se tem o delimitador de início
if(answer.getStartMessage() == 0x7E){ // 0x7E = 01111110
......@@ -689,7 +691,7 @@ int Message::receivePUT(unsigned char* fileName, char* currentPath){
return -1;
} else {
// Esperamos receber o tamanho
recv(soquete, receiptMessage, 68*sizeof(char), 0);
recv(soquete, receiptMessage, 68, 0);
answer.stringToObj((unsigned char*)receiptMessage);
// Lê começo da mensagem e vê se tem o delimitador de início
if(answer.getStartMessage() == 0x7E){ // 0x7E = 01111110
......@@ -754,7 +756,7 @@ while(!success){
cout << "Erro no recebimento dos dados (messages.cpp::receiveData)" << endl;
return -1;
}else{
recv(soquete, receiptMessage, 68*sizeof(char), 0);
recv(soquete, receiptMessage, 68, 0);
answer.stringToObj((unsigned char*)receiptMessage);
// Lê começo da mensagem e vê se tem o delimitador de início
if(answer.getStartMessage() == 0x7E){ // 0x7E = 01111110
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment