Quellcode durchsuchen

修复PostRecv后,ResetBuffer多一次缓存,导致接收客户端消息时,数据被重置

Jeff vor 3 Jahren
Ursprung
Commit
7162529e03

+ 3 - 1
Source/OGCAssistTool/OGCAssistTool/PipeService.cpp

@@ -333,7 +333,8 @@ bool CIOCPPipe::DoAccpet( PER_PIPE_CONTEXT *pPipeContext, PER_IO_CONTEXT* pIoCon
 		return false;
 	}
 
-	pIoContext->ResetBuffer();
+	//dprintf(_T("DoAccpet:%p"), &pIoContext->m_Overlapped);
+	//pIoContext->ResetBuffer();
 	return PostAccept(); 	
 }
 
@@ -345,6 +346,7 @@ bool CIOCPPipe::PostRecv( PER_IO_CONTEXT* pIoContext )
 	//WSABUF *p_wbuf   = &pIoContext->chRequest;
 	OVERLAPPED *p_ol = &pIoContext->m_Overlapped;
 
+	dprintf(_T("PostRecv:%p"), &pIoContext->m_Overlapped);
 	pIoContext->ResetBuffer();
 	pIoContext->m_OpType = OP_RECV;
 

+ 2 - 0
Source/OGCAssistTool/OGCAssistTool/PipeService.h

@@ -16,6 +16,7 @@ typedef enum _OPERATION_TYPE
     OP_MAX     // 上限;
 } OPERATION_TYPE;
 
+extern void dprintf(TCHAR* pszStr, ...);
 // 单个IO请求;
 typedef struct _PER_IO_CONTEXT
 {
@@ -58,6 +59,7 @@ typedef struct _PER_IO_CONTEXT
     // 重置缓冲区内容
     void ResetBuffer()
     {
+		dprintf(_T("ResetBuffer:%p"), &m_Overlapped);
         ZeroMemory(chRequest, BUFSIZE);
         ZeroMemory(chReply, BUFSIZE);
     }