Linux C ++ TCP套接字 - 启用阻止模式

时间:2013-10-31 16:32:42

标签: c++ linux sockets blocking

令人惊讶的是,我很难找到答案..

我有一个TCP客户端套接字,我可以成功连接并发送数据。但是,在发送数据之后,我期待从服务器返回响应。我检查了我的套接字,看起来它处于非阻塞模式。

if (fcntl(sc->connect_d, F_GETFL) && O_NONBLOCK)
{
//non blocking
}

启用阻止模式的宏是什么,以便我可以更轻松地读取服务器响应?有人可以给我一个可以做到这一点的小片段吗?感谢

1 个答案:

答案 0 :(得分:5)

if (fcntl(sc->connect_d, F_GETFL) && O_NONBLOCK)

以上代码不正确。它应该是:

if (fcntl(sc->connect_d, F_GETFL) & O_NONBLOCK)

请注意,默认情况下,TCP套接字是在阻塞模式下创建的,因此(假设您自己创建了套接字),您不需要做任何事情来“将其置于”阻塞模式。