|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface SocketOptions
獲取/設置Socket選項的方法的介面。此介面由 SocketImpl 和 DatagramSocketImpl 實作。它們的子類別應該覆寫此介面的方法來支持它們自己的選項。
在此介面中指定選項的方法和常數僅用於實作目的。如果不為 SocketImpl 或 DatagramSocketImpl 創建子類別,就不要直接使用它們。在 Socket、ServerSocket、DatagramSocket 和 MulticastSocket 中,存在獲取/設置所有這些選項的型別安全的方法。
欄位摘要 | |
---|---|
static int |
IP_MULTICAST_IF
設置用於發送多點傳送套件的傳出介面。 |
static int |
IP_MULTICAST_IF2
同上。 |
static int |
IP_MULTICAST_LOOP
此選項啟用或禁用多點傳送資料電報的本地回送。 |
static int |
IP_TOS
此選項為 TCP 或 UDP Socket在 IP 位址頭中設置服務型別或串流量類別欄位。 |
static int |
SO_BINDADDR
獲取綁定Socket的本地位址(不能僅將此選項“設置”為“得到”,因為Socket是在創建時綁定的,所以本地綁定的位址不可更改)。 |
static int |
SO_BROADCAST
為Socket設置 SO_BROADCAST。 |
static int |
SO_KEEPALIVE
為 TCP Socket設置 keepalive 選項時,如果在 2 個小時(註:實際值與實作有關)內在任意方向上都沒有跨越Socket交換資料,則 TCP 會自動將 keepalive 探頭發送到同位體。 |
static int |
SO_LINGER
指定關閉時逗留的逾時值。 |
static int |
SO_OOBINLINE
設置 OOBINLINE 選項時,在Socket上接收的所有 TCP 緊急資料都將通過Socket輸入串流接收。 |
static int |
SO_RCVBUF
設置傳入網路 I/O 的平臺所使用基礎緩衝區的大小的提示。 |
static int |
SO_REUSEADDR
設置Socket的 SO_REUSEADDR。 |
static int |
SO_SNDBUF
設置傳出網路 I/O 的平臺所使用的基礎緩衝區大小的提示。 |
static int |
SO_TIMEOUT
設置阻塞 Socket 操作的逾時值: ServerSocket.accept(); SocketInputStream.read(); DatagramSocket.receive(); 選項必須在進入阻塞操作前設置才能生效。 |
static int |
TCP_NODELAY
對此連接禁用 Nagle 演算法。 |
方法摘要 | |
---|---|
Object |
getOption(int optID)
獲取選項的值。 |
void |
setOption(int optID,
Object value)
啟用/禁用 optID 指定的選項。 |
欄位詳細資訊 |
---|
static final int TCP_NODELAY
僅對 TCP (SocketImpl) 有效。
Socket.setTcpNoDelay(boolean)
,
Socket.getTcpNoDelay()
,
常數欄位值static final int SO_BINDADDR
此選項必須在建構子中指定。
對 SocketImpl、DatagramSocketImpl 有效。
Socket.getLocalAddress()
,
DatagramSocket.getLocalAddress()
,
常數欄位值static final int SO_REUSEADDR
對 DatagramSocketImpl 有效。
static final int SO_BROADCAST
static final int IP_MULTICAST_IF
對多點傳送(DatagramSocketImpl)有效。
MulticastSocket.setInterface(InetAddress)
,
MulticastSocket.getInterface()
,
常數欄位值static final int IP_MULTICAST_IF2
MulticastSocket.setNetworkInterface(NetworkInterface)
,
MulticastSocket.getNetworkInterface()
,
常數欄位值static final int IP_MULTICAST_LOOP
static final int IP_TOS
static final int SO_LINGER
僅對 TCP(SocketImpl)有效。
Socket.setSoLinger(boolean, int)
,
Socket.getSoLinger()
,
常數欄位值static final int SO_TIMEOUT
ServerSocket.accept(); SocketInputStream.read(); DatagramSocket.receive();
選項必須在進入阻塞操作前設置才能生效。如果超過逾時值,操作將繼續阻塞,將引發 java.io.InterruptedIOException。在此情況下,將不關閉 Socket。
對所有Socket(SocketImpl、DatagramSocketImpl)都有效。
Socket.setSoTimeout(int)
,
ServerSocket.setSoTimeout(int)
,
DatagramSocket.setSoTimeout(int)
,
常數欄位值static final int SO_SNDBUF
Socket.setSendBufferSize(int)
,
Socket.getSendBufferSize()
,
DatagramSocket.setSendBufferSize(int)
,
DatagramSocket.getSendBufferSize()
,
常數欄位值static final int SO_RCVBUF
Socket.setReceiveBufferSize(int)
,
Socket.getReceiveBufferSize()
,
DatagramSocket.setReceiveBufferSize(int)
,
DatagramSocket.getReceiveBufferSize()
,
常數欄位值static final int SO_KEEPALIVE
Socket.setKeepAlive(boolean)
,
Socket.getKeepAlive()
,
常數欄位值static final int SO_OOBINLINE
Socket.setOOBInline(boolean)
,
Socket.getOOBInline()
,
常數欄位值方法詳細資訊 |
---|
void setOption(int optID, Object value) throws SocketException
SocketImpl s; ... s.setOption(SO_LINGER, new Integer(10)); // OK - set SO_LINGER w/ timeout of 10 sec. s.setOption(SO_LINGER, new Double(10)); // ERROR - expects java.lang.Integer如果請求的選項是二進制的,則其可以由 java.lang.Boolean 使用此方法設置:
s.setOption(TCP_NODELAY, new Boolean(true)); // OK - enables TCP_NODELAY, a binary option
s.setOption(TCP_NODELAY, new Boolean(false)); // OK - disables TCP_NODELAY s.setOption(SO_LINGER, new Boolean(false)); // OK - disables SO_LINGER
optID
- 標識選項value
- Socket選項的參數
SocketException
- 如果未識別選項、Socket被關閉或者發生某種低層級別的錯誤getOption(int)
Object getOption(int optID) throws SocketException
SocketImpl s; ... Boolean noDelay = (Boolean)(s.getOption(TCP_NODELAY)); if (noDelay.booleanValue()) { // true if TCP_NODELAY is enabled... ... }
對於將特定型別用作參數的選項,getOption(int) 將返回參數的值,另外返回 java.lang.Boolean(false):
Object o = s.getOption(SO_LINGER); if (o instanceof Integer) { System.out.print("Linger time is " + ((Integer)o).intValue()); } else { // the true type of o is java.lang.Boolean(false); }
optID
- 標識要獲取的選項的 int
SocketException
- 如果Socket被關閉
SocketException
- 如果 optID 根據協議堆疊(stack)空間(包括 SocketImpl)是未知的setOption(int, java.lang.Object)
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。