【发布时间】:2010-05-24 15:59:46
【问题描述】:
gcc 4.4.4 c89 Visual Studio VC++ 2008
我正在编写一个跨平台的客户端服务器应用程序。它将在 linux 和 windows 上运行。
但是,我只是想知道我为关闭套接字所做的事情是正确的。我关闭文件描述符。但是,如果关闭它有问题。处理此问题的最佳方法是什么。也许某些数据仍在发送或接收?
非常感谢您的建议,
if(close(sockfd) == -1)
{
#if defined ( _WIN32 )
fprintf(stderr, "[ %d ] [ %s ] [ %s ] [ %d ]\n",
WSAGetLastError(), strerror(errno), __func__, __LINE__);
#elif( __linux__ )
fprintf(stderr, "[ %s ] [ %s ] [ %d ]\n", strerror(errno), __func__, __LINE__);
#endif
return CS_FAILURE;
}
【问题讨论】:
-
Microsoft 有关于正确关闭套接字的正确方法的文档:msdn.microsoft.com/en-us/library/ms738547.aspx。您可能可以将其翻译成在 Linux 上也可以使用的东西。