標籤:sum extend cin cti 通過 and exce channels ide
java.nio.channels
類 ServerSocketChannel
java.lang.Object java.nio.channels.spi.AbstractInterruptibleChannel java.nio.channels.SelectableChannel java.nio.channels.spi.AbstractSelectableChannel java.nio.channels.ServerSocketChannel
-
所有已實現的介面:
-
Closeable, Channel, InterruptibleChannel
public abstract class ServerSocketChannelextends AbstractSelectableChannel
針對面向流的偵聽通訊端的可選擇通道。
伺服器通訊端通道不是偵聽網路通訊端的完整抽象。必須通過調用 socket 方法所獲得的關聯 ServerSocket 對象來完成對通訊端選項的綁定和操作。不可能為任意的已有伺服器通訊端建立通道,也不可能指定與伺服器通訊端通道關聯的伺服器通訊端所使用的 SocketImpl 對象。
通過調用此類的 open 方法建立伺服器通訊端通道。新建立的伺服器通訊端通道已開啟,但尚未綁定。試圖調用未綁定的伺服器通訊端通道的 accept 方法會導致拋出 NotYetBoundException。可通過調用相關伺服器通訊端的某個 bind 方法來綁定伺服器通訊端通道。
多個並發線程可安全地使用伺服器通訊端通道。
-
從以下版本開始:
-
1.4
| 構造方法摘要 |
protected |
ServerSocketChannel(SelectorProvider provider) 初始化此類的一個新執行個體。 |
| 方法摘要 |
abstract SocketChannel |
accept() 接受到此通道通訊端的串連。 |
static ServerSocketChannel |
open() 開啟伺服器通訊端通道。 |
abstract ServerSocket |
socket() 擷取與此通道關聯的伺服器通訊端。 |
int |
validOps() 返回一個操作集,標識此通道所支援的操作。 |
| 從類 java.nio.channels.spi.AbstractSelectableChannel 繼承的方法 |
blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register |
| 從類 java.nio.channels.SelectableChannel 繼承的方法 |
register |
| 從類 java.nio.channels.spi.AbstractInterruptibleChannel 繼承的方法 |
begin, close, end, isOpen |
| 從類 java.lang.Object 繼承的方法 |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 從介面 java.nio.channels.Channel 繼承的方法 |
close, isOpen |
ServerSocketChannel
protected ServerSocketChannel(SelectorProvider provider)
-
初始化此類的一個新執行個體。
open
public static ServerSocketChannel open() throws IOException
-
開啟伺服器通訊端通道。
通過調用系統級預設 SelectorProvider 對象的 openServerSocketChannel 方法來建立新的通道。
新通道的通訊端最初是未綁定的;可以接受串連之前,必須通過它的某個通訊端的 bind 方法將其綁定到具體的地址。
-
-
返回:
-
新的通訊端通道
-
拋出:
-
IOException - 如果發生 I/O 錯誤
validOps
public final int validOps()
-
返回一個操作集,標識此通道所支援的操作。
伺服器通訊端通道僅支援接受新的串連,所以此方法返回 SelectionKey.OP_ACCEPT。
-
-
指定者:
-
類
SelectableChannel 中的 validOps
-
-
返回:
-
有效操作集
socket
public abstract ServerSocket socket()
-
擷取與此通道關聯的伺服器通訊端。
返回的對象不會聲明任何在 ServerSocket 類中未聲明的公用方法。
-
-
返回:
-
與此通道關聯的伺服器通訊端
accept
public abstract SocketChannel accept() throws IOException
-
接受到此通道通訊端的串連。
如果此通道處於非阻塞模式,那麼在不存在掛起的串連時,此方法將直接返回 null。否則,在新的串連可用或者發生 I/O 錯誤之前會無限期地阻塞它。
不管此通道的阻塞模式如何,此方法返回的通訊端通道(如果有)將處於阻塞模式。
此方法執行的安全檢查與 ServerSocket 類的 accept 方法執行的安全檢查完全相同。也就是說,如果已安裝了安全管理器,則對於每個新的串連,此方法都會驗證安全管理器的 checkAccept 方法是否允許使用該串連的遠程端點的地址和連接埠號碼。
-
-
返回:
-
用於新串連的通訊端通道,或者如果此通道處於非阻塞模式並且沒有要接受的可用串連,則返回 null
-
拋出:
-
ClosedChannelException - 如果此通道已關閉
-
AsynchronousCloseException - 如果進行中接受操作時另一個線程關閉了此通道
-
ClosedByInterruptException - 如果進行中接受操作時另一個線程中斷了當前線程,因此關閉了該通道並將當前線程的狀態設定為中斷
-
NotYetBoundException - 如果尚未綁定此通道的通訊端
-
SecurityException - 如果已安裝安全管理器並且它不允許對新串連的遠程端點進行訪問
-
IOException - 如果發生其他 I/O 錯誤
ServerSocketChannel類似用法
- Android下的ServerSocketChannel使用方法和樣本
ServerSocketChannel API用法