鴻蒙OS DatagramSocket

2022-06-07 17:07 更新

DatagramSocket

java.lang.Object

|---java.net.DatagramSocket

public class DatagramSocket
extends Object
implements Closeable

此類表示用于發(fā)送和接收數據報包的套接字。

數據報套接字是數據包傳遞服務的發(fā)送點或接收點。 在數據報套接字上發(fā)送或接收的每個數據包都被單獨尋址和路由。 從一臺機器發(fā)送到另一臺機器的多個數據包可能會以不同的方式路由,并且可能以任何順序到達。

在可能的情況下,新構建的 DatagramSocket 啟用了 SocketOptions#SO_BROADCAST 套接字選項,以允許傳輸廣播數據報。 為了接收廣播數據包,應將 DatagramSocket 綁定到通配符地址。 在一些實現中,當 DatagramSocket 綁定到更具體的地址時,也可以接收廣播包。

示例:DatagramSocket s = new DatagramSocket(null); s.bind(新 InetSocketAddress(8888)); 相當于:DatagramSocket s = new DatagramSocket(8888); 這兩種情況都將創(chuàng)建一個 DatagramSocket 能夠在 UDP 端口 8888 上接收廣播。

構造函數摘要

修飾符 構造函數 描述
DatagramSocket() 構造一個數據報套接字并將其綁定到本地主機上的任何可用端口。
DatagramSocket(int port) 構造一個數據報套接字并將其綁定到本地主機上的指定端口。
DatagramSocket(int port, InetAddress laddr) 創(chuàng)建一個數據報套接字,綁定到指定的本地地址。
protected DatagramSocket(DatagramSocketImpl impl) 使用指定的 DatagramSocketImpl 創(chuàng)建一個未綁定的數據報套接字。
DatagramSocket(SocketAddress bindaddr) 創(chuàng)建一個數據報套接字,綁定到指定的本地套接字地址。

方法總結

修飾符和類型 方法 描述
void bind(SocketAddress addr) 將此 DatagramSocket 綁定到特定地址和端口。
void close() 關閉此數據報套接字。
void connect(InetAddress address, int port) 將套接字連接到此套接字的遠程地址。
void connect(SocketAddress addr) 將此套接字連接到遠程套接字地址(IP 地址 + 端口號)。
void disconnect() 斷開插座。
boolean getBroadcast() 測試是否啟用了 SO_BROADCAST。
DatagramChannel getChannel() 返回與此數據報套接字關聯的唯一 DatagramChannel 對象(如果有)。
InetAddress getInetAddress() 返回此套接字連接的地址。
InetAddress getLocalAddress() 獲取套接字綁定的本地地址。
int getLocalPort() 返回此套接字綁定到的本地主機上的端口號。
SocketAddress getLocalSocketAddress() 返回此套接字綁定到的端點的地址。
int getPort() 返回此套接字連接到的端口號。
int getReceiveBufferSize() 獲取此 DatagramSocket 的 SO_RCVBUF 選項的值,即平臺用于此 DatagramSocket 上的輸入的緩沖區(qū)大小。
SocketAddress getRemoteSocketAddress() 返回此套接字連接到的端點的地址,如果未連接,則返回 null。
boolean getReuseAddress() 測試是否啟用了 SO_REUSEADDR。
int getSendBufferSize() 獲取此 DatagramSocket 的 SO_SNDBUF 選項的值,即平臺用于在此 DatagramSocket 上輸出的緩沖區(qū)大小。
int getSoTimeout() 檢索 SO_TIMEOUT 的設置。
int getTrafficClass() 獲取從此 DatagramSocket 發(fā)送的數據包的 IP 數據報標頭中的流量類別或服務類型。
boolean isBound() 返回套接字的綁定狀態(tài)。
boolean isClosed() 返回套接字是否關閉。
boolean isConnected() 返回套接字的連接狀態(tài)。
void receive(DatagramPacket p) 從這個套接字接收一個數據報包。
void send(DatagramPacket p) 從這個套接字發(fā)送一個數據報包。
void setBroadcast(boolean on) 啟用/禁用 SO_BROADCAST。
static void setDatagramSocketImplFactory(DatagramSocketImplFactory fac) 為應用程序設置數據報套接字實現工廠。
void setReceiveBufferSize(int size) 將 SO_RCVBUF 選項設置為此 DatagramSocket 的指定值。
void setReuseAddress(boolean on) 啟用/禁用 SO_REUSEADDR 套接字選項。
void setSendBufferSize(int size) 將 SO_SNDBUF 選項設置為此 DatagramSocket 的指定值。
void setSoTimeout(int timeout) 使用指定的超時啟用/禁用 SO_TIMEOUT,以毫秒為單位。
void setTrafficClass(int tc) 為從此 DatagramSocket 發(fā)送的數據報設置 IP 數據報頭中的流量類別或服務類型八位字節(jié)。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構造函數詳細信息

DatagramSocket

public DatagramSocket() throws SocketException

構造一個數據報套接字并將其綁定到本地主機上的任何可用端口。 套接字將綁定到 InetAddress#isAnyLocalAddress 地址,這是內核選擇的 IP 地址。

如果存在安全管理器,則首先調用其 checkListen 方法,并以 0 作為其參數,以確保允許該操作。 這可能會導致 SecurityException。

Throws:

Throw名稱 Throw描述
SocketException 如果套接字無法打開,或者套接字無法綁定到指定的本地端口。
SecurityException 如果安全管理器存在并且其 checkListen 方法不允許該操作。

DatagramSocket

protected DatagramSocket(DatagramSocketImpl impl)

使用指定的 DatagramSocketImpl 創(chuàng)建一個未綁定的數據報套接字。

參數:

參數名稱 參數描述
impl 子類希望在 DatagramSocket 上使用的 DatagramSocketImpl 的實例。

DatagramSocket

public DatagramSocket(SocketAddress bindaddr) throws SocketException

創(chuàng)建一個數據報套接字,綁定到指定的本地套接字地址。

如果地址為空,則創(chuàng)建一個未綁定的套接字。

如果有安全管理器,首先調用它的 checkListen 方法,并使用來自套接字地址的端口作為其參數,以確保允許該操作。 這可能會導致 SecurityException。

參數:

參數名稱 參數描述
bindaddr 要綁定的本地套接字地址,對于未綁定的套接字,則為 null。

Throws:

Throw名稱 Throw描述
SocketException 如果套接字無法打開,或者套接字無法綁定到指定的本地端口。
SecurityException 如果安全管理器存在并且其 checkListen 方法不允許該操作。

DatagramSocket

public DatagramSocket(int port) throws SocketException

構造一個數據報套接字并將其綁定到本地主機上的指定端口。 套接字將綁定到 InetAddress#isAnyLocalAddress 地址,這是內核選擇的 IP 地址。

如果有安全管理器,首先調用它的 checkListen 方法,并將端口參數作為其參數,以確保允許該操作。 這可能會導致 SecurityException。

參數:

參數名稱 參數描述
port 要使用的端口。

Throws:

Throw名稱 Throw描述
SocketException 如果套接字無法打開,或者套接字無法綁定到指定的本地端口。
SecurityException 如果安全管理器存在并且其 checkListen 方法不允許該操作。

DatagramSocket

public DatagramSocket(int port, InetAddress laddr) throws SocketException

創(chuàng)建一個數據報套接字,綁定到指定的本地地址。 本地端口必須介于 0 和 65535 之間(含)。 如果 IP 地址是 0.0.0.0,則套接字將綁定到 InetAddress#isAnyLocalAddress 地址,這是內核選擇的 IP 地址。

如果有安全管理器,首先調用它的 checkListen 方法,并將端口參數作為其參數,以確保允許該操作。 這可能會導致 SecurityException。

參數:

參數名稱 參數描述
port 要使用的本地端口
laddr 要綁定的本地地址

Throws:

Throw名稱 Throw描述
SocketException 如果套接字無法打開,或者套接字無法綁定到指定的本地端口。
SecurityException 如果安全管理器存在并且其 checkListen 方法不允許該操作。

Method Detail

bind

public void bind(SocketAddress addr) throws SocketException

將此 DatagramSocket 綁定到特定地址和端口。

如果地址為空,那么系統(tǒng)將選擇一個臨時端口和一個有效的本地地址來綁定套接字。

參數:

參數名稱 參數描述
addr 要綁定的地址和端口。

Throws:

Throw名稱 Throw描述
SocketException 如果在綁定期間發(fā)生任何錯誤,或者套接字已經綁定。
SecurityException 如果安全管理器存在并且其 checkListen 方法不允許該操作。
IllegalArgumentException 如果 addr 是此套接字不支持的 SocketAddress 子類。

connect

public void connect(InetAddress address, int port)

將套接字連接到此套接字的遠程地址。當套接字連接到遠程地址時,數據包只能發(fā)送到該地址或從該地址接收。默認情況下,未連接數據報套接字。

如果套接字連接到的遠程目標不存在,或者無法到達,并且如果已接收到該地址的 ICMP 目標無法到達數據包,則后續(xù)調用 send 或 receive 可能會拋出 PortUnreachableException。請注意,不能保證會引發(fā)異常。

如果已安裝安全管理器,則調用它來檢查對遠程地址的訪問。具體來說,如果給定地址是 InetAddress#isMulticastAddress,則使用給定地址調用安全管理器的 checkMulticast 方法。否則,使用給定的地址和端口調用安全管理器的 checkConnect 和 checkAccept 方法,以驗證是否允許分別發(fā)送和接收數據報。

當套接字連接時,接收和發(fā)送不會對傳入和傳出的數據包執(zhí)行任何安全檢查,除了匹配數據包和套接字的地址和端口。在發(fā)送操作中,如果設置了數據包的地址并且數據包的地址和套接字的地址不匹配,則會拋出 IllegalArgumentException。連接到多播地址的套接字只能用于發(fā)送數據包。

參數:

參數名稱 參數描述
address 套接字的遠程地址
port 套接字的遠程端口。

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果地址為空,或者端口超出范圍。
SecurityException 如果已安裝安全管理器并且它不允許訪問給定的遠程地址

connect

public void connect(SocketAddress addr) throws SocketException

將此套接字連接到遠程套接字地址(IP 地址 + 端口號)。

如果給定 InetSocketAddress,則此方法的行為就像使用給定的套接字地址 IP 地址和端口號調用 connect(InetAddress,int)。

參數:

參數名稱 參數描述
addr 遠程地址。

Throws:

Throw名稱 Throw描述
SocketException 如果連接失敗
IllegalArgumentException 如果 addr 為 null,或者 addr 是此套接字不支持的 SocketAddress 子類
SecurityException 如果已安裝安全管理器并且它不允許訪問給定的遠程地址

disconnect

public void disconnect()

斷開插座。 如果套接字已關閉或未連接,則此方法無效。

isBound

public boolean isBound()

返回套接字的綁定狀態(tài)。

如果套接字在關閉之前已綁定,則此方法將在套接字關閉后繼續(xù)返回 true。

返回:

如果套接字成功綁定到地址,則為 true

isConnected

public boolean isConnected()

返回套接字的連接狀態(tài)。

如果套接字在關閉之前已連接,則此方法將在套接字關閉后繼續(xù)返回 true。

返回:

如果套接字成功連接到服務器,則為 true

getInetAddress

public InetAddress getInetAddress()

返回此套接字連接的地址。 如果套接字未連接,則返回 null。

如果套接字在關閉之前已連接,則此方法將在套接字關閉后繼續(xù)返回已連接的地址。

返回:

此套接字連接到的地址。

getPort

public int getPort()

返回此套接字連接到的端口號。 如果套接字未連接,則返回 -1。

如果套接字在關閉之前已連接,則此方法將在套接字關閉后繼續(xù)返回連接的端口號。

返回:

此套接字連接到的端口號。

getRemoteSocketAddress

public SocketAddress getRemoteSocketAddress()

返回此套接字連接到的端點的地址,如果未連接,則返回 null。

如果套接字在關閉之前已連接,則此方法將在套接字關閉后繼續(xù)返回已連接的地址。

返回:

表示此套接字的遠程端點的 SocketAddress,如果尚未連接,則為 null。

getLocalSocketAddress

public SocketAddress getLocalSocketAddress()

返回此套接字綁定到的端點的地址。

返回:

一個 SocketAddress 表示此套接字的本地端點,如果它已關閉或尚未綁定,則為 null。

send

public void send(DatagramPacket p) throws IOException

從這個套接字發(fā)送一個數據報包。 DatagramPacket 包括指示要發(fā)送的數據、其長度、遠程主機的 IP 地址和遠程主機上的端口號的信息。

如果有安全管理器,并且套接字當前未連接到遠程地址,則此方法首先執(zhí)行一些安全檢查。 首先,如果 p.getAddress().isMulticastAddress() 為真,則此方法以 p.getAddress() 作為參數調用安全管理器的 checkMulticast 方法。 如果該表達式的評估結果為假,則此方法將使用參數 p.getAddress().getHostAddress() 和 p.getPort() 調用安全管理器的 checkConnect 方法。 如果不允許該操作,則對安全管理器方法的每次調用都可能導致 SecurityException。

參數:

參數名稱 參數描述
p 要發(fā)送的 DatagramPacket。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。
SecurityException 如果存在安全管理器并且其 checkMulticast 或 checkConnect 方法不允許發(fā)送。
PortUnreachableException 如果套接字連接到當前無法到達的目的地,則可能會拋出。 請注意,不能保證會引發(fā)異常。
IllegalBlockingModeException 如果此套接字具有關聯的通道,并且該通道處于非阻塞模式。
IllegalArgumentException 如果套接字已連接,并且連接地址和數據包地址不同。

receive

public void receive(DatagramPacket p) throws IOException

從這個套接字接收一個數據報包。 當此方法返回時,DatagramPacket 的緩沖區(qū)被接收到的數據填充。 數據報包還包含發(fā)送者的 IP 地址和發(fā)送者機器上的端口號。

此方法阻塞,直到接收到數據報。 數據報包對象的長度字段包含接收到的消息的長度。 如果消息長于數據包的長度,則消息被截斷。

如果有安全管理器,如果安全管理器的 checkAccept 方法不允許,則無法接收數據包。

參數:

參數名稱 參數描述
p 放置傳入數據的 DatagramPacket。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。
SocketTimeoutException 如果之前調用了 setSoTimeout 并且超時已過期。
PortUnreachableException 如果套接字連接到當前無法到達的目的地,則可能會拋出。 請注意,不能保證會引發(fā)異常。
IllegalBlockingModeException 如果此套接字具有關聯的通道,并且該通道處于非阻塞模式。

getLocalAddress

public InetAddress getLocalAddress()

獲取套接字綁定的本地地址。

如果有安全管理器,首先調用它的 checkConnect 方法,并以主機地址和 -1 作為其參數,以查看是否允許該操作。

返回:

套接字綁定到的本地地址,如果套接字已關閉,則為 null,或者如果套接字未綁定或安全管理器 checkConnect 方法不允許操作,則表示 InetAddress#isAnyLocalAddress 地址的 InetAddress

getLocalPort

public int getLocalPort()

返回此套接字綁定到的本地主機上的端口號。

返回:

此套接字綁定到的本地主機上的端口號,如果套接字已關閉,則為 -1,如果尚未綁定,則為 0。

setSoTimeout

public void setSoTimeout(int timeout) throws SocketException

使用指定的超時啟用/禁用 SO_TIMEOUT,以毫秒為單位。 將此選項設置為非零超時后,對此 DatagramSocket 的 receive() 調用將僅阻塞此時間量。 如果超時到期,則會引發(fā) java.net.SocketTimeoutException,盡管 DatagramSocket 仍然有效。 必須在進入阻塞操作之前啟用該選項才能生效。 超時必須 > 0。超時為零被解釋為無限超時。

參數:

參數名稱 參數描述
timeout 以毫秒為單位的指定超時。

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯誤,例如 UDP 錯誤。

getSoTimeout

public int getSoTimeout() throws SocketException

檢索 SO_TIMEOUT 的設置。 返回 0 表示該選項被禁用(即無限超時)。

返回:

SO_TIMEOUT 的設置

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯誤,例如 UDP 錯誤。

setSendBufferSize

public void setSendBufferSize(int size) throws SocketException

將 SO_SNDBUF 選項設置為此 DatagramSocket 的指定值。 網絡實現使用 SO_SNDBUF 選項作為調整底層網絡 I/O 緩沖區(qū)大小的提示。 網絡實現也可以使用 SO_SNDBUF 設置來確定可以在此套接字上發(fā)送的數據包的最大大小。

由于 SO_SNDBUF 是一個提示,想要驗證緩沖區(qū)大小的應用程序應該調用 getSendBufferSize()。

當發(fā)送速率很高時,增加緩沖區(qū)大小可能允許網絡實現將多個傳出數據包排隊。

注意:如果使用 send(java.net.DatagramPacket) 發(fā)送大于 SO_SNDBUF 設置的 DatagramPacket,則發(fā)送或丟棄數據包是特定于實現的。

參數:

參數名稱 參數描述
size 設置發(fā)送緩沖區(qū)大小的大小。 該值必須大于 0。

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯誤,例如 UDP 錯誤。
IllegalArgumentException 如果值為 0 或為負數。

getSendBufferSize

public int getSendBufferSize() throws SocketException

獲取此 DatagramSocket 的 SO_SNDBUF 選項的值,即平臺用于在此 DatagramSocket 上輸出的緩沖區(qū)大小。

返回:

此 DatagramSocket 的 SO_SNDBUF 選項的值

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯誤,例如 UDP 錯誤。

setReceiveBufferSize

public void setReceiveBufferSize(int size) throws SocketException

將 SO_RCVBUF 選項設置為此 DatagramSocket 的指定值。 網絡實現使用 SO_RCVBUF 選項作為調整底層網絡 I/O 緩沖區(qū)大小的提示。 網絡實現也可以使用 SO_RCVBUF 設置來確定可以在此套接字上接收的數據包的最大大小。

因為 SO_RCVBUF 是一個提示,所以想要驗證緩沖區(qū)設置為多大大小的應用程序應該調用 getReceiveBufferSize()。

當數據包到達的速度快于使用接收(java.net.DatagramPacket)接收的速度時,增加 SO_RCVBUF 可能允許網絡實現緩沖多個數據包。

注意:是否可以接收到大于 SO_RCVBUF 的數據包是特定于實現的。

參數:

參數名稱 參數描述
size 設置接收緩沖區(qū)大小的大小。 該值必須大于 0。

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯誤,例如 UDP 錯誤。
IllegalArgumentException 如果值為 0 或為負數。

getReceiveBufferSize

public int getReceiveBufferSize() throws SocketException

獲取此 DatagramSocket 的 SO_RCVBUF 選項的值,即平臺用于此 DatagramSocket 上的輸入的緩沖區(qū)大小。

返回:

此 DatagramSocket 的 SO_RCVBUF 選項的值

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯誤,例如 UDP 錯誤。

setReuseAddress

public void setReuseAddress(boolean on) throws SocketException

啟用/禁用 SO_REUSEADDR 套接字選項。

對于 UDP 套接字,可能需要將多個套接字綁定到同一個套接字地址。 這通常用于接收多播數據包(請參閱 MulticastSocket)。 如果在使用 bind(java.net.SocketAddress) 綁定套接字之前啟用了 SO_REUSEADDR 套接字選項,則 SO_REUSEADDR 套接字選項允許將多個套接字綁定到同一個套接字地址。

注意:并非所有現有平臺都支持此功能,因此是否忽略此選項取決于具體實現。 但是,如果不支持,則 getReuseAddress() 將始終返回 false。

創(chuàng)建 DatagramSocket 時,SO_REUSEADDR 的初始設置被禁用。

未定義套接字綁定后啟用或禁用 SO_REUSEADDR 時的行為。

參數:

參數名稱 參數描述
on 是否啟用或禁用

Throws:

Throw名稱 Throw描述
SocketException 如果啟用或禁用 SO_RESUEADDR 套接字選項發(fā)生錯誤,或者套接字已關閉。

getReuseAddress

public boolean getReuseAddress() throws SocketException

測試是否啟用了 SO_REUSEADDR。

返回:

一個布爾值,指示是否啟用 SO_REUSEADDR。

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯誤,例如 UDP 錯誤。

setBroadcast

public void setBroadcast(boolean on) throws SocketException

啟用/禁用 SO_BROADCAST。

某些操作系統(tǒng)可能要求以實現特定權限啟動 Java 虛擬機以啟用此選項或發(fā)送廣播數據報。

參數:

參數名稱 參數描述
on 是否開啟廣播。

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯誤,例如 UDP 錯誤。

getBroadcast

public boolean getBroadcast() throws SocketException

測試是否啟用了 SO_BROADCAST。

返回:

一個布爾值,指示是否啟用 SO_BROADCAST。

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯誤,例如 UDP 錯誤。

setTrafficClass

public void setTrafficClass(int tc) throws SocketException

為從此 DatagramSocket 發(fā)送的數據報設置 IP 數據報頭中的流量類別或服務類型八位字節(jié)。 由于底層網絡實現可能會忽略此值,因此應用程序應將其視為提示。

tc 必須在 0 <= tc <= 255 范圍內,否則將拋出 IllegalArgumentException。

筆記:

對于 Internet 協(xié)議 v4,該值由一個整數組成,其中最低有效 8 位表示套接字發(fā)送的 IP 數據包中 TOS 八位字節(jié)的值。 RFC 1349 定義 TOS 值如下:

  • IPTOS_LOWCOST (0x02)
  • IPTOS_RELIABILITY (0x04)
  • IPTOS_THROUGHPUT (0x08)
  • IPTOS_LOWDELAY (0x10)

最后一個低位總是被忽略,因為它對應于 MBZ(必須為零)位。

設置優(yōu)先級字段中的位可能會導致 SocketException 指示不允許該操作。

對于 Internet 協(xié)議 v6,tc 是放置在 IP 標頭的 sin6_flowinfo 字段中的值。

參數:

參數名稱 參數描述
tc 位集的 int 值。

Throws:

Throw名稱 Throw描述
SocketException 如果設置流量類別或服務類型時出錯

getTrafficClass

public int getTrafficClass() throws SocketException

獲取從此 DatagramSocket 發(fā)送的數據包的 IP 數據報標頭中的流量類別或服務類型。

由于底層網絡實現可能會忽略使用 setTrafficClass(int) 設置的流量類或服務類型,因此此方法可能返回與之前使用此 DatagramSocket 上的 setTrafficClass(int) 方法設置的值不同的值。

返回:

已設置的流量類別或服務類型

Throws:

Throw名稱 Throw描述
SocketException 如果獲取流量類別或服務類型值時出錯。

close

public void close()

關閉此數據報套接字。

當前在此套接字上的接收(java.net.DatagramPacket)中阻塞的任何線程都將拋出 SocketException。

如果此套接字具有關聯的通道,則該通道也將關閉。

指定者:

在接口 AutoCloseable 中關閉

指定者:

在接口Closeable中關閉

isClosed

public boolean isClosed()

返回套接字是否關閉。

返回:

如果套接字已關閉,則為 true

getChannel

public DatagramChannel getChannel()

返回與此數據報套接字關聯的唯一 DatagramChannel 對象(如果有)。

當且僅當通道本身是通過 DatagramChannel.open 方法創(chuàng)建時,數據報套接字才會具有通道。

返回:

與此數據報套接字關聯的數據報通道,如果此套接字不是為通道創(chuàng)建的,則為 null

setDatagramSocketImplFactory

public static void setDatagramSocketImplFactory(DatagramSocketImplFactory fac) throws IOException

為應用程序設置數據報套接字實現工廠。 工廠只能指定一次。

當應用程序創(chuàng)建新的數據報套接字時,會調用套接字實現工廠的 createDatagramSocketImpl 方法來創(chuàng)建實際的數據報套接字實現。

除非已經設置了工廠,否則將 null 傳遞給方法是無操作的。

如果有安全管理器,該方法首先調用安全管理器的 checkSetFactory 方法,確保操作被允許。 這可能會導致 SecurityException。

參數:

參數名稱 參數描述
fac 想要的工廠。

Throws:

Throw名稱 Throw描述
IOException 如果在設置數據報套接字工廠時發(fā)生 I/O 錯誤。
SocketException 如果工廠已經定義。
SecurityException 如果存在安全管理器并且其 checkSetFactory 方法不允許該操作。
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號