2017-04-26 60 views
0

我繼承了一些使用MSG_CONFIRM作爲send()中的標誌的套接字代碼。 send()的手冊頁似乎說MSG_CONFIRM只適用於UDP套接字。這是一個使用TCP協議的AF_UNIX套接字。MSG_CONFIRM和TCP

沒有MSG_CONFIRM標誌我得到「資源暫時不可用」的send()。

MSG_CONFIRM在這種情況下意味着什麼......使用TCP協議的AF_UNIX套接字?

+0

相關信息:http://stackoverflow.com/questions/16594387/why-should-i-use-or-not-use-msg-confirm – Barmar

回答

0

在嘗試發送之前,我用AF_UNIX套接字拋棄了MSG_CONFIRM並在POLLOUT上輪詢。我也結束了離開套接字和相關的send()的非阻塞。現在工作正常。

+0

*發送之前輪詢POLLOUT *是浪費時間。套接字通常是可寫的。當發生EAGAIN/EWOULDBLOCK發送錯誤時,您應該只使用POLLOUT。這與MSG_CONFIRM沒有任何關係。 – EJP