gpt4 book ai didi

c++ - FD_SET 问题/网络

转载 作者:行者123 更新时间:2023-11-28 03:48:27 25 4
gpt4 key购买 nike

嗨,现在我想知道客户端或服务器是否断开连接,然后发送错误,但我似乎无法让它工作,我不知道该怎么做,所以我真的需要帮助 plz

这是我的代码

    #ifdef _WIN32 || _WIN64
if(select(0,&fd_read,NULL,&fd_close,&time)==-1){
printf("Error in Select()");
return 0;
}
#else
if(select(sockMax + 1,&fd_read,NULL,&fd_close,&time)==-1){
printf("Error in Select()");
return 0;
}
#endif

if(FD_ISSET(socklisten,&fd_read)){

}
else
{
dopack(&pkt);
send(socklisten, (char*)&pkt, sizeof(pack), 0);
}


//this is where the error shows -----------
if(FD_SET(socklisten,&fd_close))
{
backtoMenu = true;
}

FD_ZERO(&fd_leer);

FD_SET(sockEscucha,&fd_leer);

错误说在'do'之前预期的主表达式所以是的,我不知道那是什么意思以防万一这就是我声明 fd_read 和 fd_close 的方式

fd_set fd_read;       
fd_set fd_close;

请提供任何帮助,tyvm 将不胜感激

最佳答案

另外,Richard所说的,传递给select()的第三个fd_set不是关闭的FD,而是一些需要特别注意的异常情况(which确切地说,是由底层驱动程序定义的,例如,TCP 套接字将它用于“紧急”数据。

您通过 recv() 的返回代码检测到远程关闭,即在可读描述符的处理内部。如果流套接字上的 recv() 返回 0,则远程端已关闭连接(使用 TCP,您仍然可以发送数据,因为只有一个方向关闭);如果 recv() 返回 -1,则 errno 有更多信息,例如 ECONNRESET 表示收到了 TCP RST 数据包。

关于c++ - FD_SET 问题/网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6619263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com