大家好,你好! 我在實踐中有關於選擇模型的問題。本書的一些內容告訴我關於在選擇模型中設置了無阻塞的套接字fd。我不知道原因。 就我而言,我可以知道客戶端套接字fd是否可以通過FD_ISSET(fd_all [i],fd_readable_set)讀取。所以,爲什麼我需要將客戶端套接字fd設置爲非阻塞? 有人告訴我爲什麼嗎?謝謝!爲什麼需要設置客戶端套接字fd在服務器上使用select進行非阻塞?
-1
A
回答
1
有時,在select()
確定它可讀並且應用程序實際嘗試讀取它時,套接字發生變化。所以最安全的做法是讓它不被阻塞,這樣在你閱讀時就不會被掛起。
如果您有多個進程或線程在同一套接字上調用select()
,可能發生的一種可能的方法是。當數據到達時,他們都會返回並嘗試讀取它,但只有第一個會成功。
+0
,在多個進程或線程中,一旦select函數返回所有進程或者threas都會收到一些fd_set.Is那麼? –
+0
是的,如果他們都在等待可讀的同一個FD。 – Barmar
+0
好的,我明白了,謝謝! –
相關問題
- 1. 非阻塞的客戶端和服務器套接字用C
- 2. C套接字服務器,Java套接字客戶端:阻塞!
- 3. 服務器的非阻塞套接字
- 4. 爲什麼我的非阻塞Java服務器拒絕客戶端連接?
- 5. 使用select與阻塞和非阻塞套接字的影響
- 6. ruby中的非阻塞tcp客戶端套接字失敗
- 7. Java非阻塞客戶端
- 8. BOOST-ASIO阻塞服務器不響應阻塞客戶端?
- 9. Java套接字服務器阻塞
- 10. 如何避免使用套接字阻塞(聊天客戶端)
- 11. 在多線程單服務器多客戶端應用程序中阻塞套接字和非阻塞套接字
- 12. PHP套接字服務器/客戶端
- 13. Python服務器客戶端套接字
- 14. 客戶端服務器udp套接字
- 15. Java套接字客戶端/服務器
- 16. 爲什麼select()始終在非阻塞模式下被阻塞
- 17. 如何在QNX中設置UDP套接字爲非阻塞
- 18. 爲什麼在爲非HTTP服務器讀取套接字時需要Async IO
- 19. 使用PHP作爲C++服務器的套接字客戶端
- 20. 非阻塞套接字
- 21. SO_KEEPALIVE:設置在服務器套接字上還是基於每個客戶端?
- 22. 高效的非阻塞服務器的UDP或Unix套接字?
- 23. 使用套接字與客戶端和服務器進行通信
- 24. 在非阻塞套接字連接中,select()總是返回1
- 25. Python套接字客戶端到Java套接字服務器
- 26. 什麼可能阻止客戶端連接到服務器?
- 27. 非阻塞TCP服務器
- 28. 客戶端/服務器與系統.NET套接字作爲客戶端和服務器上的C++ winsock
- 29. MaxReceivedMessageSize:爲什麼在客戶端和服務器端都進行單向調用?
- 30. Php非阻塞soap客戶端
一個完全沒用的問題。 '有人告訴我'。什麼書?告訴你*究竟是什麼? – EJP
@ EJP,對不起,我沒有一個清晰的描述。沒有「某本書」,它是來自網絡的一些數據。例如: http://www.cnblogs.com/zhuyp1015/archive/2012/05/31/2529203.html https://segmentfault.com/a/1190000003063859 –