如果我们将套接字通道的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