diff --git a/headers/macros.h b/headers/macros.h
index 1d2987bf3a47265ac362b3a4c606858253e97bc1..ef6923e6975a9b3490d8b3fe6f971818d044c953 100644
--- a/headers/macros.h
+++ b/headers/macros.h
@@ -5,7 +5,7 @@
 #define UI unsigned int
 
 //tamanho da janela 
-#define TAM_JANELA 1
+#define TAM_JANELA 2
 
 // Macro que cria uma sequencia com o 1 deslocado "des" posicoes a direita
 #define MASKR(des) (1 << des)
diff --git a/headers/server.h b/headers/server.h
index 07473d0a0b81b28d51325c690368c28fc7922369..4f3ac04feb6e8e7d5fbc5b64b73cd1ce13ba4038 100644
--- a/headers/server.h
+++ b/headers/server.h
@@ -33,6 +33,7 @@ class server {
 private:
   // --------- Dados ---------- //
   int soquete;
+  int tipoReceivingFrames;
 
   conexao *socket;
 
@@ -54,6 +55,7 @@ private:
   int receive_file_data(string fileName);
   bool verify_crc8(frame *f);
   bool verify_seq(int seq, int lastSeq);
+  queue<frame *> receive_frames_window(int lastSeq);
 
 public:
   // ------- Construtores ------ //
@@ -376,11 +378,11 @@ int server::receive_valid_frame(frame **f) {
   return 1;
 }
 
-queue<frames *> server::receive_frames_window(int lastSeq)
+queue<frame *> server::receive_frames_window(int lastSeq)
 {
-  queue<frames *> frames_queue;
+  queue<frame *> frames_queue;
   frame *f;
-  retries = 0;
+  int retries = 0;
 
   do {
     f = receive_frame_socket();
@@ -390,26 +392,28 @@ queue<frames *> server::receive_frames_window(int lastSeq)
 
     int tipo = f->get_tipo();
 
+    // Adiciona o frame de fim de transmissao
+    if ( tipo == FIMT ) 
+    {
+      frames_queue.push(f);
+      return frames_queue;
+    }
+
     // Primeiro frame a ser recebido, seta o tipo
     if ( lastSeq == -1 ) 
     {
       // Ignora os frames perdidos na linha
-      if ( (tipo != MIDIA || tipo != TEXTO) && f->get_seq() != 0 ) {continue;}
+      if ( (tipo != MIDIA && tipo != TEXTO) || f->get_seq() != 0 ) {continue;}
       tipoReceivingFrames = f->get_tipo();
       frames_queue.push(f);
       lastSeq = 0;
       retries = 0;
-      continue; }
-
-    // Adiciona o frame de fim de transmissao
-    if ( f->get_tipo() == FIMT ) 
-    {
-      frames_queue.push(f);
-      return frames_queue;
+      continue; 
     }
 
+
     // Ignora se o frame nao for do tipo midia e esteja recebendo midia
-    if ( f->get_tipo() == MIDIA && tipoReceivingFrames == MIDIA )
+    if ( tipo == MIDIA && tipoReceivingFrames == MIDIA )
     {
       // Ignora se for um frame do tipo midia que nao e o segundo da sequencia
       if ( lastSeq != 0 || (TAM_JANELA > 1 && f->get_seq() != 1)) { continue; }
@@ -423,20 +427,22 @@ queue<frames *> server::receive_frames_window(int lastSeq)
     }
 
     // Recebe os frames de dados de um arquivo
-    if ( tipoReceivingFrames == DADOS && f->get_tipo() == DADOS )
+    if ( tipoReceivingFrames == DADOS && tipo == DADOS )
     {
       if ( !verify_seq(f->get_seq(), lastSeq) ) { continue; }
       frames_queue.push(f);
       retries = 0;
+      lastSeq = f->get_seq();
       continue;
     }
 
     // Recebe os frames de uma mensagem
-    if ( tipoReceivingFrames == TEXTO && f->get_tipo() == TEXTO )
+    if ( tipoReceivingFrames == TEXTO && tipo == TEXTO )
     {
       if ( !verify_seq(f->get_seq(), lastSeq) ) { continue; }
       frames_queue.push(f);
       retries = 0;
+      lastSeq = f->get_seq();
       continue;
     }
 
@@ -449,10 +455,31 @@ void server::start_receveing_message() {
   int continueTransmission = 1;
 
   cout << "Recebendo frames\n";
-  frame *f;
-  lastSeq = -1;
+  int lastSeq = -1;
   do {
-    queue<frames *> frames = receive_frames_window(lastSeq);
+    queue<frame *> frames = receive_frames_window(lastSeq);
+    cout << "Quantidade de frames: " << frames.size() << "\n";
+
+    while ( !frames.empty() )
+    {
+      cout << "Frame recebido: \n";
+      frame *f = frames.front();
+      frames.pop();
+      f->imprime(HEX);
+      cout << "\n";
+
+      int tipo = f->get_tipo();
+      switch (tipo)
+      {
+        case FIMT:
+          continueTransmission = 0;
+
+        case TEXTO:
+          lastSeq = f->get_seq();
+      }
+    }
+
+    cout << "Recebeu todos os frames de uma janela\n";
 
 //    if (!receive_valid_frame(&f)) { return; }
 //    if (!f) { return; }
@@ -474,6 +501,8 @@ void server::start_receveing_message() {
 //    }
 //
   } while (continueTransmission);
+
+  cout << "Encerrou a transmissao\n";
 }
 
 // ------------------------------- PUBLIC --------------------------------- //