2016-05-16 31 views
-1

當我讀APUE,它說會發生什麼插座上如果綁定,聽,或接受失敗

SUS警告說,如果連接失敗插座的狀態不定

但如果bind,listen或accept失敗,則沒有關於套接字狀態的具體描述。 所以我想知道如果綁定,監聽或接受失敗,套接字是否仍然有效?

+1

APUE = Unix環境下的高級編程,W. Richard Stevens(對於那些可能想知道的人) –

回答

4
  • 如果bind()失敗,則不綁定。您可以再撥打bind(),或connect()
  • 如果listen()失敗,則表示沒有收聽。你可以連接它,或者如果你感覺幸運的話,可以試試listen()
  • 如果accept()失敗,它仍在監聽。
  • connect()是所有這些的例外。你所能做的就是關閉它。

請注意,在所有情況下,套接字「仍然有效」。這只是在連接失敗後無法使用。你仍然必須關閉它。 [原因或至少是因爲它可能已被自動綁定到作爲到所需連接目標的路由的一部分而選擇的本地接口,這可能不適合於隨後連接到不同的目標。 ]

相關問題