Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 在实际系统中bind()是否可以返回EINPROGRESS?_Sockets_Posix - Fatal编程技术网

Sockets 在实际系统中bind()是否可以返回EINPROGRESS?

Sockets 在实际系统中bind()是否可以返回EINPROGRESS?,sockets,posix,Sockets,Posix,根据POSIX,如果在非阻塞套接字上调用bind,则允许返回EINPROGRESS并异步完成。() 我检查了libuv和Twisted的源代码,据我所知,它们都在非阻塞套接字上调用了bind,而没有处理此错误。Linux或FreeBSDbind(2)手册页都没有提到这是一种可能的结果 这真的发生在任何真实的系统上吗?如果是这样,当绑定完成时,您如何得到通知?还说:“当异步执行赋值时,pselect()、select()、和poll()应指示套接字的文件描述符已准备好读写。”因此,就像任何其他异步

根据POSIX,如果在非阻塞套接字上调用
bind
,则允许返回
EINPROGRESS
并异步完成。()

我检查了libuv和Twisted的源代码,据我所知,它们都在非阻塞套接字上调用了
bind
,而没有处理此错误。Linux或FreeBSD
bind(2)
手册页都没有提到这是一种可能的结果


这真的发生在任何真实的系统上吗?如果是这样,当
绑定完成时,您如何得到通知?

还说:“当异步执行赋值时,
pselect()
select()
、和
poll()
应指示套接字的文件描述符已准备好读写。”因此,就像任何其他异步套接字操作一样,您必须轮询套接字状态以了解操作何时完成。您应该跟踪了解您是否正在等待
bind()
vs
recv()
vs
send()
,等等。
bind()
在网络上没有任何功能,因此它没有任何阻塞。我怀疑这都是编辑上的错误@雷米尔博,这根本没有道理。只有绑定的套接字永远不会为I/O做好准备。您必须在其上调用
listen()
connect()
,它才符合条件。事实上,我认为
listen()
也被描述为阻塞调用,但也没有人为此编写程序。我没有看到任何关于
listen
异步完成的内容。对于
bind
来说,这是一个有意的改变:搜索ud bind async。因此,听起来IPv4/6永远不应该出现这种情况,但在理论上,对于其他一些协议,可能会出现这种情况。我仍然有兴趣知道是否有这样的实现被部署过,如果有,它们的行为是什么。