我有一個阻塞TCP套接字,它在accept()
呼叫阻塞。是否有可能使accept()
調用返回(除了通過從客戶端獲得連接)?這是關閉套接字作爲系統關閉的一部分,並退出正在接受連接的線程。可以接受()返回沒有得到連接?
1
A
回答
3
使用SOCK_NONBLOCK在flags參數:http://www.linuxhowtos.org/manpages/2/accept.htm
4
1)在一個單線程程序可以使用來自另一進程的信號。確保在安裝信號處理程序時不傳遞SA_RESTART標誌。 2)如果您需要從同一進程的另一個線程停止accept()
,請在您的套接字和此管道上創建套接字對或管道並阻止select()
。當你需要解鎖時,寫一些東西給管道。
3)或只是使用select()
與一些小超時(1秒),並在每次返回輪詢退出標誌。
0
在windows中,如果關閉接受連接(調用closesocket()),WSA將取消accept(接受將返回INVALID_SOCKET)。
相關問題
- 1. 沒有返回到tomcat池的連接
- 2. DW可以接受左連接嗎?
- 3. 鏈接列表,沒有得到以前返回
- 4. 連接到API,獲得409返回
- 5. HTTP服務器,在連接被接受後,我得到-1從recv返回()
- 6. 接受返回現有連接,導致seg錯誤
- 7. SLComposeViewControllerResultDone在沒有連接時返回
- 8. python mysql連接器Fetchone返回沒有
- 9. NetworkInfo.isConnected()返回true,但沒有連接
- 10. select()返回時沒有傳入連接
- 11. Linkedin連接API沒有返回新的連接
- 12. 當連接表中沒有一行可用時,左連接不返回行
- 13. Ajax請求返回(406不可接受)
- 14. 返回ObjectResult結果406不可接受
- 15. Rails 3返回HTTP 406不可接受?
- 16. IHttpActionResult的可接受的返回選項
- 17. rhdfs是沒有得到連接
- 18. 沒有得到正確的連接
- 19. 消費者沒有返回連接到我的數據庫連接池
- 20. SQL連接得到的結果沒有連接也
- 21. 我可以連接()沒有session_start()嗎?
- 22. 可以連接()返回0與非阻塞套接字?
- 23. SignalA沒有得到連接一旦連接狀態去重新連接
- 24. 接口沒有得到回調Android
- 25. 套接字接受後無法獲得返回值()
- 26. 沒有得到返回值
- 27. 「您沒有更多的應用可以接受此邀請。」接受邀請時
- 28. 有沒有什麼辦法可以從池中得到多少連接數
- 29. TcpClient.Connected返回true,但客戶端沒有連接,我可以使用什麼?
- 30. MySQL的左連接沒有WHERE子句返回沒有空行
使它成爲一個非阻塞的插座..? – 2011-05-05 12:23:42