gpt4 book ai didi

c - 在 LINUX 上的 C 中打开 O_NONBLOCKING

转载 作者:可可西里 更新时间:2023-11-01 02:33:33 25 4
gpt4 key购买 nike

***背景****我是 TCP 的新手,所以我的问题可能有点基础。我试图在接收数据的套接字上打开 O_NONBLOCK。到目前为止,我已经尝试过不同的方法来设置 O_NONBLOCK、itcl() 和 fcntl()。现在我正试图让 fcntl() 工作。

我的问题:您应该在连接套接字之前还是之后设置 O_NONBLOCK?

**我当前的 fcntl() 实现是基于代码之前的链接:

How to reset a socket back to blocking mode (after I set it to nonblocking mode)?

//set socket to NONBlocking
on = fcntl(Socket,F_GETFL);
on = (on | O_NONBLOCK);
if(fcntl(Socket,F_SETFL,on) < 0)
{
perror("turning NONBLOCKING on failed\n");
}

// DO CONNECT
rc = connect()

谢谢你花时间看这个

最佳答案

您应该随时设置O_NONBLOCK。如果您在 connect 之前执行此操作,则 connect 也将是非阻塞的(返回 EINPROGRESS;您可以select轮询 等待其完成的可写状态。

关于c - 在 LINUX 上的 C 中打开 O_NONBLOCKING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14632346/

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