ServerSocketChannel API用法

來源:互聯網
上載者:User

標籤: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用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.