diff --git a/Message.cpp b/Message.cpp index 4461bcc52ff491dea224c3bc4bdf4e4e775e95d0..2d88346ca0bd37bee4fb65ea19a2ba3758f41d0f 100644 --- a/Message.cpp +++ b/Message.cpp @@ -64,7 +64,7 @@ char* Message::getMessageAsCharPointer(){ } int Message::getMessageSize(){ - return size.to_ulong()+4; + return size.to_ulong() < MINSIZE ? MINSIZE+4 : size.to_ulong()+4; } int Message::dataToInt() { diff --git a/Protocol.cpp b/Protocol.cpp index 081fde22990a24d3f4c8409e6f1db729b859f66e..6a2613b5faedfb9b5c2a13f32f82070e8ba06516 100644 --- a/Protocol.cpp +++ b/Protocol.cpp @@ -72,10 +72,11 @@ int Protocol::setData(vector<BYTE> data, int type){ last = data.begin()+i+size+1; vector<BYTE> subvector(first, last); msg.data = subvector; + msg.size = bitset<SIZE_S>(size); + msg.calcParity(); if(size < MINSIZE){ BYTE zero = 0x00; msg.data.insert(msg.data.end(), MINSIZE-size, zero); - size = MINSIZE; } msg.size = bitset<SIZE_S>(size); msg.calcParity(); @@ -95,7 +96,8 @@ int Protocol::recvMessage(int sockt){ Message msg = Message(); int size = (int)(dataRec[1]>>2); cout << "Tamanho:" << size << "\t"; - msg.setBitFields(dataRec[0], dataRec[1], dataRec[2], dataRec[size+3]); + int dataSize = size < MINSIZE ? MINSIZE : size; + msg.setBitFields(dataRec[0], dataRec[1], dataRec[2], dataRec[dataSize+3]); cout << "Sequence:" << msg.sequence.to_ulong() << "\t"; BYTE msgData[size]; diff --git a/server.cpp b/server.cpp index 40b87c6c17ff25799ea748f11c6c2450b55ac60c..637f0ce24804343e5cf50193ad847e5a0d3587bc 100644 --- a/server.cpp +++ b/server.cpp @@ -18,6 +18,9 @@ int main(){ if(status == CD){ cout << "Recebeu CD\n"; cd(receiveProtocol.getDataAsString()); + vector<BYTE> val(1,(BYTE)0); + sendProtocol.setData(val, OK); + sendProtocol.sendMessage(sockt,0); }else if(status == LS){ cout << "protocol data: " << receiveProtocol.getDataAsString() << endl; cout << "message data: " << receiveProtocol.getMessages().back().getDataAsString() << endl;