invalid conversion from ‘int*’ to ‘socklen_t*’解决方案

invalid conversion from ‘int*’ to ‘socklen_t*’
bool CNBSocket::Accept(CNBSocket& sockClient,sockaddr_in* pAddrClient,long lTimeOut)

{

  assert(m_nTypeOfSocket == ST_ACCEPT);

  assert(m_fdSocket != INVALID_SOCKET);

  assert(sockClient.m_fdSocket == INVALID_SOCKET);

  bool bRet = false;

  int nSelectRet = -1;

  if(lTimeOut == WAIT_FOREVER)

  {

  nSelectRet = 1;

  }

  else

  {

  FD_SET ReadSet;

  FD_ZERO(&ReadSet);

  FD_SET(m_fdSocket,&ReadSet);

  TIMEVAL tv;

  tv.tv_sec = lTimeOut;

  tv.tv_usec = 0;

  nSelectRet = select(1,&ReadSet,NULL,NULL,&tv);

  }  

  if(nSelectRet == 1)

  {

  sockaddr_in addr;

  int nAddrLen = sizeof(addr);

  SOCKET fdClient = accept(m_fdSocket,(sockaddr*)&addr,&nAddrLen);

  if(fdClient > 0)

  {

  if(pAddrClient != NULL)

  {

  memcpy(pAddrClient,&addr,sizeof(addr));

  }

  sockClient.m_fdSocket = fdClient;

  bRet = true;

  }

  }

  return bRet;

}
这个原本是VC下的代码 现在移植到Linux系统下后就报错 错误如题 这是怎么回事?

------解决方案--------------------
int nAddrLen = sizeof(addr);
改成
socklen_t nAddrLen = sizeof(addr);
不就行了。