invalid conversion from ‘int*’ to ‘socklen_t*’

king_0910 2012-03-22 02:33:50
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系统下后就报错 错误如题 这是怎么回事?
...全文
861 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
king_0910 2012-03-23
  • 打赏
  • 举报
回复
谢谢一楼二楼 问题就像你们写的那样解决了 谢谢
pengfoo 2012-03-22
  • 打赏
  • 举报
回复

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

改为:
SOCKET fdClient = accept(m_fdSocket,(sockaddr*)&addr,(socklen_t*)&nAddrLen);

luciferisnotsatan 2012-03-22
  • 打赏
  • 举报
回复
int nAddrLen = sizeof(addr);
改成
socklen_t nAddrLen = sizeof(addr);
不就行了。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧