大虾们,帮我看看下面两个代码片段有什么差别,片段一不能正常发数据,片段二可以
但我我瞧了半天,这两段代码没什么差别啊,,help..............片段一
//  CThreadNode threadNode=*(CThreadNode*)sockPipeNode;
//  char sendBuff[CMD_BUF_LEN]={0};
//  DWORD readed=0;
//  DWORD avail=0;
//  BOOL bRet=FALSE;
//  while(!bExit)
//  {
//  avail=0;
//  bRet=PeekNamedPipe(threadNode.hPipe,NULL,0,NULL,&avail,NULL);
//  if (bRet&&avail>0)
//  {
//  bRet=ReadFile(threadNode.hPipe,sendBuff,RECV_BUF_LEN,&readed,NULL);
//  if (bRet&&readed>0)
//  {
//  SendData(threadNode.m_Sock,sendBuff,readed);
//  }
//  }
// 
//  Sleep(50);
//  }片段二
CThreadNode tNode = *(CThreadNode *)sockPipeNode;
char szBuf[RECV_BUF_LEN] = {0};
DWORD dwReadLen = 0, dwTotalAvail = 0;
BOOL bRet = FALSE;
while ( !bExit ) {
dwTotalAvail = 0;
bRet = PeekNamedPipe(tNode.hPipe, NULL, 0, NULL, &dwTotalAvail, NULL);
if ( bRet && dwTotalAvail > 0 ) {
bRet = ReadFile(tNode.hPipe, szBuf, RECV_BUF_LEN, &dwReadLen, NULL);
if ( bRet && dwReadLen > 0 ) {
SendData(tNode.m_Sock, szBuf, dwReadLen);
}
}
Sleep(50);
}

解决方案 »

  1.   

    VC6.0有个Windiff工具可以比较代码。
      

  2.   

    char sendBuff[CMD_BUF_LEN]={0};
    char szBuf[RECV_BUF_LEN] = {0};
    两个宏定义长度一样么?
      

  3.   

    第一段,只要将CMD_BUF_LEN换成RECV_BUF_LEN估计就行了,怀疑第一个小于第二个!所以
      

  4.   

    片段一
    char sendBuff[CMD_BUF_LEN]={0};
    bRet=ReadFile(threadNode.hPipe,sendBuff,RECV_BUF_LEN,&readed,NULL);片段二
    char szBuf[RECV_BUF_LEN] = {0};
    bRet = ReadFile(tNode.hPipe, szBuf, RECV_BUF_LEN, &dwReadLen, NULL);