Просмотр исходного кода

changes to reading from the socket

git-svn-id: svn://svn.code.sf.net/p/ditto-cp/code/trunk@95 595ec19a-5cb4-439b-94a8-42fb3063c22c
sabrogden 21 лет назад
Родитель
Сommit
e41d4835a4
1 измененных файлов с 10 добавлено и 11 удалено
  1. 10 11
      Server.cpp

+ 10 - 11
Server.cpp

@@ -71,13 +71,13 @@ UINT  MTServerThread(LPVOID pParam)
 BOOL Recv(SOCKET sock, SendInfo *pInfo)
 {
 	long lReceiveCount = 0;
-	long lLastRecievedCount = 0;
-	long lExpectedCount = sizeof(SendInfo);
-	SendInfo info;
 
-	while(lLastRecievedCount < lExpectedCount)
+	long lWanted = sizeof(SendInfo);
+	long lOffset = 0;
+
+	while(lWanted > 0)
 	{
-		lReceiveCount = recv(sock, (char*)&info, lExpectedCount-lLastRecievedCount, 0);
+		lReceiveCount = recv(sock, ((char*)pInfo) + lOffset, lWanted, 0);
 		if(lReceiveCount == SOCKET_ERROR)
 		{
 			LogSendRecieveInfo("********ERROR if(lReceiveCount == SOCKET_ERROR)*******");
@@ -89,16 +89,15 @@ BOOL Recv(SOCKET sock, SendInfo *pInfo)
 			return FALSE;
 		}
 
-		LogSendRecieveInfo(StrF("------Bytes Read %d LastRecievedCount %d", lReceiveCount, lLastRecievedCount));
+		LogSendRecieveInfo(StrF("------Bytes Read %d Total Recieved %d", lReceiveCount, lOffset));
 
-		memcpy(((char*)pInfo) + lLastRecievedCount, &info, lReceiveCount);
-		//lReceiveCount = lLastRecievedCount + lReceiveCount;
-		lLastRecievedCount += lReceiveCount;
+		lWanted -= lReceiveCount;
+		lOffset += lReceiveCount;
 	}
 
-	if(pInfo->m_nSize != lExpectedCount)
+	if(pInfo->m_nSize != lWanted)
 	{
-		LogSendRecieveInfo(StrF("------ERROR Incoming struct size %d Expected Size %d", pInfo->m_nSize, lExpectedCount));
+		LogSendRecieveInfo(StrF("------ERROR Incoming struct size %d Expected Size %d", pInfo->m_nSize, lWanted));
 		return FALSE;
 	}