JavaTM 2 Platform
Standard Ed. 6

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 ServerSocketChannel
extends AbstractSelectableChannel

針對導向串流的偵聽Socket的可選擇通道。

伺服器Socket通道不是偵聽網路Socket的完整抽象。必須通過調用 socket 方法所獲得的關聯 ServerSocket 物件來完成對Socket選項的綁定和操作。不可能為任意的已有伺服器Socket創建通道,也不可能指定與伺服器Socket通道關聯的伺服器Socket所使用的 SocketImpl 物件。

通過調用此類別的 open 方法創建伺服器Socket通道。新創建的伺服器Socket通道已打開,但尚未綁定。試圖調用未綁定的伺服器Socket通道的 accept 方法會導致拋出 NotYetBoundException。可通過調用相關伺服器Socket的某個 bind 方法來綁定伺服器Socket通道。

多個共時執行緒可安全地使用伺服器Socket通道。

從以下版本開始:
1.4

建構子摘要
protected ServerSocketChannel(SelectorProvider provider)
          初始化此類別的一個新實例。
 
方法摘要
abstract  SocketChannel accept()
          接受到此通道Socket的連接。
static ServerSocketChannel open()
          打開伺服器Socket通道。
abstract  ServerSocket socket()
          獲取與此通道關聯的伺服器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
打開伺服器Socket通道。

通過調用系統級預設 SelectorProvider 物件的 openServerSocketChannel 方法來創建新的通道。

新通道的Socket最初是未綁定的;可以接受連接之前,必須通過它的某個Socket的 bind 方法將其綁定到具體的位址。

返回:
新的Socket通道
拋出:
IOException - 如果發生 I/O 錯誤

validOps

public final int validOps()
返回一個操作集,標識此通道所支持的操作。

伺服器Socket通道僅支持接受新的連接,所以此方法返回 SelectionKey.OP_ACCEPT

指定者:
類別 SelectableChannel 中的 validOps
返回:
有效操作集

socket

public abstract ServerSocket socket()
獲取與此通道關聯的伺服器Socket。

返回的物件不會宣告任何在 ServerSocket 類別中未宣告的公共方法。

返回:
與此通道關聯的伺服器Socket

accept

public abstract SocketChannel accept()
                              throws IOException
接受到此通道Socket的連接。

如果此通道處於非阻塞網要,那麼在不存在掛起的連接時,此方法將直接返回 null。否則,在新的連接可用或者發生 I/O 錯誤之前會無限期地阻塞它。

不管此通道的阻塞網要如何,此方法返回的Socket通道(如果有)將處於阻塞網要。

此方法執行的安全檢查與 ServerSocket 類別的 accept 方法執行的安全檢查完全相同。也就是說,如果已安裝了安全管理器,則對於每個新的連接,此方法都會驗證安全管理器的 checkAccept 方法是否允許使用該連接的遠端端點的位址和埠號號。

返回:
用於新連接的Socket通道,或者如果此通道處於非阻塞網要並且沒有要接受的可用連接,則返回 null
拋出:
ClosedChannelException - 如果此通道已關閉
AsynchronousCloseException - 如果正在進行接受操作時另一個執行緒關閉了此通道
ClosedByInterruptException - 如果正在進行接受操作時另一個執行緒中斷了當前執行緒,因此關閉了該通道並將當前執行緒的狀態設置為中斷
NotYetBoundException - 如果尚未綁定此通道的Socket
SecurityException - 如果已安裝安全管理器並且它不允許對新連接的遠端端點進行存取
IOException - 如果發生其他 I/O 錯誤

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only