如果我們將套接字通道的configureBlocking設置爲false,那麼連接會自動變爲雙工模式?我想說的是,在這種情況下,服務器可以異步地將數據推送到客戶端瀏覽器嗎?我是否需要手動編程此行爲?Web Socket和非阻塞模式
0
A
回答
2
ServerSocketChannel和SocketChannel configureBlocking方法從AbstractSelectableChannel類繼承。 configureBlocking方法返回一個SelectableChannel對象。
這裏是從約一個的SelectableChannel對象的文檔片段:
阻塞模式
的可選擇信道或者是在阻斷模式或非阻塞模式。在阻塞模式下,通道上調用的每個I/O操作都會阻塞,直到完成。在非阻塞模式下,I/O操作永遠不會阻塞,並且可能傳輸比請求的字節更少的字節,或者可能沒有字節。可選通道的阻塞模式可以通過調用其isBlocking方法來確定。
新創建的可選頻道始終處於阻止模式。非阻塞模式與基於選擇器的多路複用相結合最爲有用。頻道必須在註冊到選擇器之前進入非阻止模式,並且在註銷之前可能不會返回到阻止模式。
新創建的可選擇通道總是處於阻塞模式,所以是你必須明確地調用configureBlocking(假),如果你想非阻塞雙工模式。
下面是Javadoc中的列表,你會發現有用: http://download.oracle.com/javase/7/docs/api/java/nio/channels/SocketChannel.html
http://download.oracle.com/javase/6/docs/api/java/nio/channels/ServerSocketChannel.html
http://download.oracle.com/javase/7/docs/api/java/nio/channels/SelectableChannel.html
相關問題
- 1. 嵌套Socket阻塞非阻塞SocketHi
- 2. NIO非阻塞模式
- 3. PHP流中的阻塞和非阻塞模式
- 4. 非阻塞的Socket通過與fgets
- 5. 非阻塞PASV襪子和阻塞
- 6. 非阻塞寫入和阻塞recv
- 7. 爲什麼select()始終在非阻塞模式下被阻塞
- 8. mpi:阻塞與非阻塞
- 9. play 2.0非阻塞模型vs python龍捲風非阻塞模型
- 10. C socket:非阻塞方式讀取\ n分離的命令
- 11. load_balanced_mode()中的IPython.parallel中的阻塞和非阻塞模式有什麼區別?
- 12. 非阻塞式輸入python2.7
- 13. 非阻塞式寫入c
- 14. IOCP和非阻塞IO
- 15. 非阻塞IO和HystrixObservableCommand
- 16. 非阻塞stdio
- 17. 非阻塞pthread_join
- 18. 非阻塞spmd
- 19. 帶延遲的阻塞/非阻塞
- 20. 是renderer.render()阻塞還是非阻塞?
- 21. 併發SCTP讀線程和非阻塞模式
- 22. 非阻塞PostgreSQL ORM
- 23. 非阻塞等待
- 24. 非阻塞的PipedStreams?
- 25. 非阻塞的getch()
- 26. java.io.BufferedReader.readLine()是非阻塞
- 27. 非阻塞getch(),ncurses
- 28. 非阻塞選擇()?
- 29. 非阻塞隊列
- 30. WPF:非阻塞UI
總之,一個不得不修改程序使用可選的。它不像翻轉開關那麼簡單。 – 2011-01-20 03:48:33