ServerSocketChannel API用法


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 錯誤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM