now connection in made but the sckRecv() in never called and i still cannot reconnect back


Code:
#include <windows.h>
#include <winsock.h>

#pragma comment(lib,"wsock32.lib")
#pragma comment(lib,"mpr.lib")

void sckListen();
void sckRecv(LPVOID TempSock);

SOCKADDR Addr; 
SOCKET Socket;
DWORD threadId;


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{

     WSADATA WsaDat;
     if (WSAStartup(MAKEWORD(2,0), &WsaDat) != 0)
           {MessageBox(0,L"WSA Initialization failed.",L"",0);} 


      Socket = socket(AF_INET, SOCK_STREAM, 0);
      if (Socket == INVALID_SOCKET)
	  {MessageBox(0,L"Socket creation failed.",L"",0);} 


SOCKADDR_IN SockAddr; 
SockAddr.sin_port = 8877;
SockAddr.sin_family = AF_INET;//(TCP/IP)

SockAddr.sin_addr.S_un.S_addr = INADDR_ANY;


if (bind(Socket, (SOCKADDR *)(&SockAddr), sizeof(SockAddr)) == SOCKET_ERROR)
      {MessageBox(0,L"Attempt to bind failed.",L"",0);}

listen(Socket, 1); 

while (true)
      {
		 SOCKET *TempSock = new SOCKET;
		*TempSock = accept(Socket, &Addr, (int *)sizeof(Addr));
		  
		if (*TempSock !=SOCKET_ERROR)
		   {
			   Socket = *TempSock;
		       CreateThread( NULL, 0,(LPTHREAD_START_ROUTINE) sckRecv,(LPVOID)*TempSock, 0, &threadId);

			   delete [] TempSock;
		   }
	  }

}
void sckRecv(LPVOID TempSock)
{

int RetVal = SOCKET_ERROR;
char String[6]={0};
while (RetVal == SOCKET_ERROR)
      {
      RetVal = recv((SOCKET)TempSock, String, sizeof(String), 0);

	  if (String[0] != NULL){

		  MessageBoxA(0,String,String,0);}

      if ((RetVal == 0)||(RetVal == WSAECONNRESET)||(RetVal == WSAECONNABORTED))
           {
           MessageBox(0,L"Connection closed at other end.",L"",0);
           break;
           }
      } 
}