我在C.闭非阻塞插座
void setNonBlocking(SOCKET fd){
int flags;
if (-1 == (flags = fcntl(fd, F_GETFL, 0)))
flags = 0;
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
}
int main(){
int sock;
connect(sock, .....);
setNonBlocking(sock);
....
close(sock);
//we will do something here but the application exits in/after the close operation
}
以下代码我使用的插座在非阻塞模式与setNonBlocking功能。当我关闭套接字时,应用程序立即退出,没有段错误或其他任何事情。我没有看到这个问题,如果我不使用setNonBlocking函数。
如何在没有此问题的情况下关闭无阻塞套接字?
在GDB下运行你的代码。您描述的行为(关闭导致应用程序退出而不崩溃)几乎是不可能的。 – diciu 2009-12-29 10:08:17
您是否使用'socket()'函数创建了套接字?你的代码中缺少这个。你声明袜子(此时包含垃圾或0),然后你调用connect。 – Frunsi 2009-12-29 12:07:09
你能解释一下你如何在代码中发送/接收数据吗?这可能会更有帮助。通常关闭不应该因为套接字是非阻塞而不同。 – Jay 2009-12-29 18:21:26