如果我們將套接字通道的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. 將OpenSSL BIO從阻塞模式更改爲非阻塞模式
- 4. ssh - 差異阻塞和非阻塞模式
- 5. PHP流中的阻塞和非阻塞模式
- 6. 使用非阻塞的SocketChannel,是否阻塞了Socket?
- 7. 非阻塞的Socket通過與fgets
- 8. PHP的Socket阻塞
- 9. 非阻塞方式
- 10. 非阻塞PASV襪子和阻塞
- 11. 非阻塞寫入和阻塞recv
- 12. 爲什麼select()始終在非阻塞模式下被阻塞
- 13. DatagramChannel,阻塞模式和cpu
- 14. mpi:阻塞與非阻塞
- 15. play 2.0非阻塞模型vs python龍捲風非阻塞模型
- 16. C socket:非阻塞方式讀取\ n分離的命令
- 17. load_balanced_mode()中的IPython.parallel中的阻塞和非阻塞模式有什麼區別?
- 18. 非阻塞django?
- 19. PHP Inotify非阻塞方式
- 20. 非阻塞式輸入python2.7
- 21. 非阻塞方式的Kombu
- 22. 非阻塞式寫入c
- 23. PostgreSQL和Scala - 非阻塞API
- 24. IOCP和非阻塞IO
- 25. EINTR和非阻塞呼叫
- 26. 非阻塞IO和HystrixObservableCommand
- 27. gevent.StreamServer和非阻塞raw_input()?
- 28. 非阻塞setTimeout
- 29. 非阻塞spmd
- 30. 非阻塞pthread_join
總之,一個不得不修改程序使用可選的。它不像翻轉開關那麼簡單。 – 2011-01-20 03:48:33