我使用Boost 1.45 ASIO来处理在Windows和Mac上运行的应用程序中的某些套接字连接。在Windows上,下面的代码不会导致任何错误,并且我的套接字是干净地关闭的。不过,在Mac上,关机和(如果我注释掉)关闭功能给我“错误的文件描述符”错误。直到我称之为代码,套接字工作正常。但只要我叫停或关闭,我得到错误。任何想法可能会发生什么?错误的文件描述符关闭Boost套接字
if(socket.is_open())
{
socket.shutdown(socket.both);
socket.close();
}
这将有助于,如果你能澄清这段代码的意图。通常,'〜socket()'dtor关闭底层本地描述符类型。你明确关闭它有什么原因吗? –
我以为你确实需要关闭套接字 - 这个错误当然不会导致任何问题(除了错误本身),所以如果我不需要明确地关闭套接字,那么我会很乐意接受那个出来,继续我的生活。所以澄清,我是否应该不需要关闭或关闭? –
我已经添加了答案 –