2016-05-16 37 views
-1

当我读APUE,它说会发生什么插座上如果绑定,听,或接受失败

SUS警告说,如果连接失败插座的状态不定

但如果bind,listen或accept失败,则没有关于套接字状态的具体描述。 所以我想知道如果绑定,监听或接受失败,套接字是否仍然有效?

+1

APUE = Unix环境下的高级编程,W. Richard Stevens(对于那些可能想知道的人) –

回答

4
  • 如果bind()失败,则不绑定。您可以再拨打bind(),或connect()
  • 如果listen()失败,则表示没有收听。你可以连接它,或者如果你感觉幸运的话,可以试试listen()
  • 如果accept()失败,它仍在监听。
  • connect()是所有这些的例外。你所能做的就是关闭它。

请注意,在所有情况下,套接字“仍然有效”。这只是在连接失败后无法使用。你仍然必须关闭它。 [原因或至少是因为它可能已被自动绑定到作为到所需连接目标的路由的一部分而选择的本地接口,这可能不适合于随后连接到不同的目标。 ]

相关问题