|
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。