public class Socket extends Object implements Closeable
ソケットの実際の処理は、SocketImpl
クラスのインスタンスによって実行されます。アプリケーションは、ソケット実装を作成するソケットファクトリを変更することで、ローカルファイアウォールに適したソケットを作成するように自身を構成することができます。
setSocketImplFactory(java.net.SocketImplFactory)
, SocketImpl
, SocketChannel
修飾子 | コンストラクタと説明 |
---|---|
|
Socket()
システムでデフォルトになっているタイプの SocketImpl を使用して、接続されていないソケットを作成します。
|
|
Socket(InetAddress address, int port)
ストリームソケットを作成し、指定された IP アドレスの指定されたポート番号に接続します。
|
|
Socket(InetAddress host, int port, boolean stream)
非推奨。
UDP 転送ではなく DatagramSocket を使ってください。
|
|
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
ソケットを作成し、指定されたリモートポート上の指定されたリモートアドレスに接続します。
|
|
Socket(Proxy proxy)
接続されていないソケットを作成します。ほかの設定にかかわらず使用すべきプロキシタイプが存在する場合は、そのタイプを指定します。
|
protected |
Socket(SocketImpl impl)
ユーザーが指定した SocketImpl を使用して、接続されていないソケットを作成します。
|
|
Socket(String host, int port)
ストリームソケットを作成し、指定されたホスト上の指定されたポート番号に接続します。
|
|
Socket(String host, int port, boolean stream)
非推奨。
UDP 転送ではなく DatagramSocket を使ってください。
|
|
Socket(String host, int port, InetAddress localAddr, int localPort)
ソケットを作成し、指定されたリモートポート上の指定されたリモートホストに接続します。
|
修飾子と型 | メソッドと説明 |
---|---|
void |
bind(SocketAddress bindpoint)
ソケットをローカルアドレスにバインドします。
|
void |
close()
このソケットを閉じます。
|
void |
connect(SocketAddress endpoint)
このソケットをサーバーに接続します。
|
void |
connect(SocketAddress endpoint, int timeout)
指定されたタイムアウト値を使って、このソケットをサーバーに接続します。
|
SocketChannel |
getChannel()
このソケットに関連付けられた一意の
SocketChannel オブジェクトを返します (存在する場合)。 |
InetAddress |
getInetAddress()
ソケットの接続先のアドレスを返します。
|
InputStream |
getInputStream()
このソケットの入力ストリームを返します。
|
boolean |
getKeepAlive()
SO_KEEPALIVE が有効かどうかを調べます。
|
InetAddress |
getLocalAddress()
ソケットのバインド先のローカルアドレスを取得します。
|
int |
getLocalPort()
このソケットのバインド先のローカルポート番号を返します。
|
SocketAddress |
getLocalSocketAddress()
このソケットがバインドされている端点のアドレスを返します。ソケットがバインドされていない場合は
null を返します。 |
boolean |
getOOBInline()
OOBINLINE が有効かどうかを調べます。
|
OutputStream |
getOutputStream()
このソケットの出力ストリームを返します。
|
int |
getPort()
このソケットの接続先のリモートポート番号を返します。
|
int |
getReceiveBufferSize()
この Socket で使われる SO_RCVBUF オプションの値を取得します。これは、この Socket で入力用としてプラットフォームが使うバッファーのサイズです。
|
SocketAddress |
getRemoteSocketAddress()
このソケットが接続されている端点のアドレスを返します。ソケットが接続されていない場合は
null を返します。 |
boolean |
getReuseAddress()
SO_REUSEADDR が有効かどうかを調べます。
|
int |
getSendBufferSize()
この Socket で使われる SO_SNDBUF オプションの値を取得します。これは、この Socket で出力用としてプラットフォームが使うバッファーのサイズです。
|
int |
getSoLinger()
SO_LINGER の設定を返します。
|
int |
getSoTimeout()
SO_TIMEOUT の設定を返します。
|
boolean |
getTcpNoDelay()
TCP_NODELAY が有効かどうかを調べます。
|
int |
getTrafficClass()
このソケットから送信されるパケットの IP ヘッダーのトラフィッククラスまたはサービスタイプを取得します。
|
boolean |
isBound()
ソケットのバインディング状態を返します。
|
boolean |
isClosed()
ソケットの閉じた状態を返します。
|
boolean |
isConnected()
ソケットの接続状態を返します。
|
boolean |
isInputShutdown()
ソケット接続の読み込み側の半分が閉じているかどうかを返します。
|
boolean |
isOutputShutdown()
ソケット接続の書き込み側の半分が閉じているかどうかを返します。
|
void |
sendUrgentData(int data)
このソケット上で 1 バイトの緊急データを送信します。
|
void |
setKeepAlive(boolean on)
SO_KEEPALIVE を有効または無効にします。
|
void |
setOOBInline(boolean on)
OOBINLINE (TCP 緊急データの受信) を有効または無効にします。
デフォルトではこのオプションは無効になっており、ソケット上で受信された TCP 緊急データは何の通知もなく破棄されます。
|
void |
setPerformancePreferences(int connectionTime, int latency, int bandwidth)
このソケットのパフォーマンス設定を行います。
|
void |
setReceiveBufferSize(int size)
この Socket の SO_RCVBUF オプションを指定された値に設定します。
|
void |
setReuseAddress(boolean on)
SO_REUSEADDR ソケットオプションを有効または無効にします。
|
void |
setSendBufferSize(int size)
この Socket の SO_SNDBUF オプションを指定された値に設定します。
|
static void |
setSocketImplFactory(SocketImplFactory fac)
アプリケーションのクライアントソケット実装ファクトリを設定します。
|
void |
setSoLinger(boolean on, int linger)
指定された遅延時間 (秒) を使って SO_LINGER を有効または無効にします。
|
void |
setSoTimeout(int timeout)
指定されたタイムアウト (ミリ秒) を使って SO_TIMEOUT を有効または無効にします。
|
void |
setTcpNoDelay(boolean on)
TCP_NODELAY を有効または無効にします (Nagle のアルゴリズムの有効、無効の切り替え)。
|
void |
setTrafficClass(int tc)
このソケットから送信されるパケットの IP ヘッダーのトラフィッククラスまたはサービスタイプのオクテットを設定します。
|
void |
shutdownInput()
このソケットの入力ストリームを「ストリームの終わり」に設定します。
|
void |
shutdownOutput()
このソケットの出力ストリームを無効にします。
|
String |
toString()
このソケットを
String に変換します。 |
public Socket()
public Socket(Proxy proxy)
セキュリティーマネージャーが存在する場合、その checkConnect
メソッドが、プロキシのホストアドレスとポート番号を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。
例
Socket s = new Socket(Proxy.NO_PROXY);
は、ほかのプロキシ構成を無視してプレーンなソケットを作成します。Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("socks.mydom.com", 1080)));
は、指定された SOCKS プロキシサーバー経由で接続するソケットを作成します。proxy
- どのような種類のプロキシ処理を使用すべきかを指定した Proxy
オブジェクト。IllegalArgumentException
− プロキシの型が無効な場合、またはプロキシが null
の場合。SecurityException
− セキュリティーマネージャーが存在し、プロキシに接続する権限が拒否された場合。ProxySelector
、Proxy
protected Socket(SocketImpl impl) throws SocketException
impl
- サブクラスが Socket 上で使用する SocketImpl のインスタンス。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。public Socket(String host, int port) throws UnknownHostException, IOException
指定されたホストが null の場合、アドレスを InetAddress.getByName
(null) と指定するのと同じです。つまり、それは、ループバックインタフェースのアドレスを指定するのと等価になります。
アプリケーションでサーバーソケットファクトリを指定している場合は、そのファクトリの createSocketImpl
メソッドが呼び出され、実際のソケットが作成されます。そうでない場合は「プレーンな」ソケットが作成されます。
セキュリティーマネージャーが存在する場合、その checkConnect
メソッドが、ホストアドレスと port
を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。
host
- ホスト名。ループバックアドレスの場合は null
。port
- ポート番号。UnknownHostException
− ホストの IP アドレスを決定できなかった場合。IOException
- ソケットの生成中に入出力エラーが発生した場合。SecurityException
- セキュリティーマネージャーが存在し、その checkConnect
メソッドでこの操作が許可されていない場合。IllegalArgumentException
- port パラメータが指定された有効なポート値の範囲 (0 から 65535) 外である場合。setSocketImplFactory(java.net.SocketImplFactory)
, SocketImpl
, SocketImplFactory.createSocketImpl()
, SecurityManager.checkConnect(java.lang.String, int)
public Socket(InetAddress address, int port) throws IOException
アプリケーションでソケットファクトリを指定している場合は、そのファクトリの createSocketImpl
メソッドが呼び出され、実際のソケットが作成されます。そうでない場合は「プレーンな」ソケットが作成されます。
セキュリティーマネージャーが存在する場合、その checkConnect
メソッドが、ホストアドレスと port
を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。
address
- IP アドレス。port
- ポート番号。IOException
- ソケットの生成中に入出力エラーが発生した場合。SecurityException
- セキュリティーマネージャーが存在し、その checkConnect
メソッドでこの操作が許可されていない場合。IllegalArgumentException
- port パラメータが指定された有効なポート値の範囲 (0 から 65535) 外である場合。NullPointerException
- address
が null である場合。setSocketImplFactory(java.net.SocketImplFactory)
, SocketImpl
, SocketImplFactory.createSocketImpl()
, SecurityManager.checkConnect(java.lang.String, int)
public Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException
指定されたホストが null の場合、アドレスを InetAddress.getByName
(null) と指定するのと同じです。つまり、それは、ループバックインタフェースのアドレスを指定するのと等価になります。
ポート番号が zero
の場合は、bind
操作で一時的なポートが選択されます。
セキュリティーマネージャーが存在する場合、その checkConnect
メソッドが、ホストアドレスと port
を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。
host
− リモートホストの名前。ループバックアドレスの場合は null
。port
- リモートポートlocalAddr
- ソケットのバインド先のローカルアドレス、または anyLocal
アドレスの場合は null
。localPort
- ソケットのバインド先のローカルポート、またはシステムで選択された空いているポートの場合は zero
。IOException
- ソケットの生成中に入出力エラーが発生した場合。SecurityException
- セキュリティーマネージャーが存在し、その checkConnect
メソッドでこの操作が許可されていない場合。IllegalArgumentException
- port パラメータまたは localPort パラメータが指定された有効なポート値の範囲 (0 から 65535) 外である場合。SecurityManager.checkConnect(java.lang.String, int)
public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException
指定されたローカルアドレスが null の場合、アドレスを AnyLocal アドレスと指定するのと同じです (InetAddress.isAnyLocalAddress
() を参照)。
ポート番号が zero
の場合は、bind
操作で一時的なポートが選択されます。
セキュリティーマネージャーが存在する場合、その checkConnect
メソッドが、ホストアドレスと port
を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。
address
− リモートアドレスport
- リモートポートlocalAddr
- ソケットのバインド先のローカルアドレス、または anyLocal
アドレスの場合は null
。localPort
- ソケットのバインド先のローカルポート、またはシステムで選択された空いているポートの場合は zero
。IOException
- ソケットの生成中に入出力エラーが発生した場合。SecurityException
- セキュリティーマネージャーが存在し、その checkConnect
メソッドでこの操作が許可されていない場合。IllegalArgumentException
- port パラメータまたは localPort パラメータが指定された有効なポート値の範囲 (0 から 65535) 外である場合。NullPointerException
- address
が null である場合。SecurityManager.checkConnect(java.lang.String, int)
@Deprecated public Socket(String host, int port, boolean stream) throws IOException
指定されたホストが null の場合、アドレスを InetAddress.getByName
(null) と指定するのと同じです。つまり、それは、ループバックインタフェースのアドレスを指定するのと等価になります。
stream 引数が true
の場合、これはストリームソケットを作成します。stream 引数が false
の場合、これはデータグラムソケットを作成します。
アプリケーションでサーバーソケットファクトリを指定している場合は、そのファクトリの createSocketImpl
メソッドが呼び出され、実際のソケットが作成されます。そうでない場合は「プレーンな」ソケットが作成されます。
セキュリティーマネージャーが存在する場合、その checkConnect
メソッドが、ホストアドレスと port
を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。
UDP ソケットを使用する場合、TCP/IP に関連するソケットオプションは適用されません。
host
- ホスト名。ループバックアドレスの場合は null
。port
- ポート番号。stream
− これがストリームソケットとデータグラムソケットのどちらであるかを示す boolean
。IOException
- ソケットの生成中に入出力エラーが発生した場合。SecurityException
- セキュリティーマネージャーが存在し、その checkConnect
メソッドでこの操作が許可されていない場合。IllegalArgumentException
- port パラメータが指定された有効なポート値の範囲 (0 から 65535) 外である場合。setSocketImplFactory(java.net.SocketImplFactory)
, SocketImpl
, SocketImplFactory.createSocketImpl()
, SecurityManager.checkConnect(java.lang.String, int)
@Deprecated public Socket(InetAddress host, int port, boolean stream) throws IOException
stream 引数が true
の場合、これはストリームソケットを作成します。stream 引数が false
の場合、これはデータグラムソケットを作成します。
アプリケーションでサーバーソケットファクトリを指定している場合は、そのファクトリの createSocketImpl
メソッドが呼び出され、実際のソケットが作成されます。そうでない場合は「プレーンな」ソケットが作成されます。
セキュリティーマネージャーが存在する場合は、checkConnect
メソッドが host.getHostAddress()
と port
をその引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。
UDP ソケットを使用する場合、TCP/IP に関連するソケットオプションは適用されません。
host
- IP アドレス。port
- ポート番号。stream
- true
の場合はストリームソケットを作成し、それ以外の場合はデータグラムソケットを作成します。IOException
- ソケットの生成中に入出力エラーが発生した場合。SecurityException
- セキュリティーマネージャーが存在し、その checkConnect
メソッドでこの操作が許可されていない場合。IllegalArgumentException
- port パラメータが指定された有効なポート値の範囲 (0 から 65535) 外である場合。NullPointerException
- host
が null である場合。setSocketImplFactory(java.net.SocketImplFactory)
, SocketImpl
, SocketImplFactory.createSocketImpl()
, SecurityManager.checkConnect(java.lang.String, int)
public void connect(SocketAddress endpoint) throws IOException
endpoint
- SocketAddress
IOException
- 接続時にエラーが発生した場合IllegalBlockingModeException
- このソケットに関連するチャネルが存在し、そのチャネルが非ブロックモードである場合。IllegalArgumentException
- 端点が null であるか、このソケットによってサポートされていない SocketAddress サブクラスである場合public void connect(SocketAddress endpoint, int timeout) throws IOException
endpoint
- SocketAddress
timeout
− 使用するタイムアウト値 (ミリ秒)。IOException
- 接続時にエラーが発生した場合SocketTimeoutException
− 接続する前にタイムアウトが過ぎた場合IllegalBlockingModeException
- このソケットに関連するチャネルが存在し、そのチャネルが非ブロックモードである場合。IllegalArgumentException
- 端点が null であるか、このソケットによってサポートされていない SocketAddress サブクラスである場合public void bind(SocketAddress bindpoint) throws IOException
アドレスが null
の場合は、システムにより一時的なポートと有効なローカルアドレスが選択されてソケットがバインドされます。
bindpoint
- バインド先の SocketAddress
IOException
- バインド操作に失敗した場合、あるいはソケットがすでにバインドされている場合。IllegalArgumentException
- bindpoint が、このソケットによってサポートされていない SocketAddress サブクラスである場合isBound()
public InetAddress getInetAddress()
ソケットが閉じられる
前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先アドレスを返します。
null
。public InetAddress getLocalAddress()
ワイルドカード
アドレス。public int getPort()
ソケットが閉じられる
前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先ポート番号を返します。
public int getLocalPort()
ソケットが閉じられる
前に接続されていた場合、このメソッドはソケットが閉じられたあとも引き続きローカルポート番号を返します。
public SocketAddress getRemoteSocketAddress()
null
を返します。
ソケットが閉じられる
前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先アドレスを返します。
SocketAddress
。ソケットがまだ接続されていない場合は null
。getInetAddress()
, getPort()
, connect(SocketAddress, int)
, connect(SocketAddress)
public SocketAddress getLocalSocketAddress()
null
を返します。
InetSocketAddress
が表す端点にバインドされているソケットが閉じられている
場合、このメソッドはソケットが閉じられたあとも InetSocketAddress
を返します。その場合、返された InetSocketAddress
のアドレスはワイルドカード
アドレスで、そのポートはバインド先のローカルポートです。
SocketAddress
。ソケットがまだバインドされていない場合は null
。getLocalAddress()
, getLocalPort()
, bind(SocketAddress)
public SocketChannel getChannel()
SocketChannel
オブジェクトを返します (存在する場合)。
チャネル自体が SocketChannel.open
メソッドまたは ServerSocketChannel.accept
メソッドを使用して作成された場合にだけ、ソケットにチャネルが存在します。
public InputStream getInputStream() throws IOException
このソケットにチャネルが関連付けられている場合、結果として得られる入力ストリームは、その操作のすべてをチャネルに委譲します。そのチャネルが非ブロックモードである場合、入力ストリームの read 操作が IllegalBlockingModeException
をスローします。
異常な状況下では、リモートホストやネットワークソフトウェアによって使用している接続が解除される可能性があります (TCP 接続の場合であれば接続がリセットされるなど)。接続の解除がネットワークソフトウェアによって検出された場合、返された入力ストリームに対して次のことが当てはまります。
ネットワークソフトウェアがソケットによってバッファリングされたバイトを破棄する可能性がある。ネットワークソフトウェアによって破棄されていないバイトは、read
を使って読み取ることができる。
ソケットでバッファリングされたバイトがない場合、またはバッファリングされたすべてのバイトが read
によって消費された場合、以降の read
への呼び出しはすべて、IOException
をスローします。
ソケットでバッファリングされたバイトがなく、ソケットが close
を使用して閉じられていない場合、available
は 0
を返します。
返されたInputStream
をクローズすると、関連付けられたソケットがクローズします。
IOException
− 入力ストリームの作成時に入出力エラーが発生した場合、ソケットがクローズされている場合、ソケットが接続されていない場合、または shutdownInput()
を使ってソケットの入力がシャットダウンされた場合public OutputStream getOutputStream() throws IOException
このソケットにチャネルが関連付けられている場合、結果として得られる出力ストリームは、その操作のすべてをチャネルに委譲します。そのチャネルが非ブロックモードである場合、出力ストリームの write 操作が IllegalBlockingModeException
をスローします。
返されたOutputStream
をクローズすると、関連付けられたソケットがクローズします。
IOException
− 出力ストリームの作成中に入出力エラーが発生した場合、またはソケットが接続されていない場合。public void setTcpNoDelay(boolean on) throws SocketException
on
− TCP_NODELAY を有効にする場合は true
、無効にする場合は false
。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。getTcpNoDelay()
public boolean getTcpNoDelay() throws SocketException
boolean
値。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。setTcpNoDelay(boolean)
public void setSoLinger(boolean on, int linger) throws SocketException
on
− 遅延時間を有効にするかどうかを指定。linger
− on が true の場合は、遅延時間。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。IllegalArgumentException
− 遅延時間の値が負の数値である場合。getSoLinger()
public int getSoLinger() throws SocketException
SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。setSoLinger(boolean, int)
public void sendUrgentData(int data) throws IOException
data
- 送信するデータのバイトIOException
- データ送信時にエラーが発生した場合。public void setOOBInline(boolean on) throws SocketException
受信緊急データの処理に関しては、限られたサポートしか提供されていないことに注意してください。特に、高位レベルのプロトコルが提供されていない場合、受信する緊急データの通知は提供されず、通常データと緊急データを区別する機能はありません。
on
- OOBINLINE を有効にする場合は true
、無効にする場合は false
。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。getOOBInline()
public boolean getOOBInline() throws SocketException
boolean
値。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。setOOBInline(boolean)
public void setSoTimeout(int timeout) throws SocketException
timeout
- ミリ秒で表される、指定されたタイムアウト。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。getSoTimeout()
public int getSoTimeout() throws SocketException
SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。setSoTimeout(int)
public void setSendBufferSize(int size) throws SocketException
SO_SNDBUF はヒントなので、アプリケーションでバッファーのサイズ設定を調べる必要がある場合は、getSendBufferSize()
を呼び出してください。
size
- 送信バッファーサイズの設定サイズ。この値は 0 より大きくなければならない。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。IllegalArgumentException
- 値が 0 または負の値である場合。getSendBufferSize()
public int getSendBufferSize() throws SocketException
SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。setSendBufferSize(int)
public void setReceiveBufferSize(int size) throws SocketException
受信バッファーのサイズを増やすと、大規模な接続でのネットワーク入出力のパフォーマンスを上げることができます。一方、サイズを減らすと、受信データのバックログを減らすことができます。
SO_RCVBUF はヒントなので、アプリケーションでバッファーのサイズ設定を調べる必要がある場合は、getReceiveBufferSize()
を呼び出してください。
SO_RCVBUF の値は、リモートピアに通知される TCP 受信ウィンドウの設定にも使用されます。一般に、ソケットが接続されているかぎり、このウィンドウサイズはいつでも変更できます。ただし、64K を超える受信ウィンドウを要求する場合は、ソケットをリモートピアに接続する前に変更を要求する必要があります。次の 2 つの場合に注意してください。
ServerSocket.setReceiveBufferSize(int)
を呼び出してこれを実行する必要があります。size
- 受信バッファーサイズの設定サイズ。この値は 0 より大きくなければならない。IllegalArgumentException
- 値が 0 または負の値である場合。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。getReceiveBufferSize()
, ServerSocket.setReceiveBufferSize(int)
public int getReceiveBufferSize() throws SocketException
SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。setReceiveBufferSize(int)
public void setKeepAlive(boolean on) throws SocketException
on
− ソケットをオンのままにしておくかどうかを指定。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。getKeepAlive()
public boolean getKeepAlive() throws SocketException
boolean
値。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。setKeepAlive(boolean)
public void setTrafficClass(int tc) throws SocketException
tc の範囲は 0 <= tc <= 255
でなければいけません。そうでない場合は、IllegalArgumentException がスローされます。
注:
IP (Internet Protocol) バージョン 4 の場合、この値は integer
で構成され、最下位 8 ビットが、ソケットによって送信された IP パケットの TOS オクテットの値を表します。RFC 1349 では TOS の値は次のように定義されています。
IPTOS_LOWCOST (0x02)
IPTOS_RELIABILITY (0x04)
IPTOS_THROUGHPUT (0x08)
IPTOS_LOWDELAY (0x10)
優先フィールドにビットを設定すると、操作が許可されないことを示す SocketException になることがあります。
RFC 1122 のセクション 4.2.4.2 に示されているように、準拠した TCP 実装は、接続の寿命がある間はアプリケーションが TOS フィールドを変更できるようにすべきです (ただし、必ずしもそうする必要はない)。したがって、TCP 接続の確立後にサービスタイプフィールドを変更できるかどうかは、使用するプラットフォーム内の実装によって決まります。アプリケーションは、接続後に TOS フィールドを変更できると仮定すべきではありません。
IP (Internet Protocol) Version 6 の場合、tc
は IP ヘッダーの sin6_flowinfo フィールドに格納される値です。
tc
- ビットセットの int
値。SocketException
- トラフィッククラスまたはサービスタイプの設定時にエラーが発生した場合getTrafficClass()
public int getTrafficClass() throws SocketException
使用するネットワーク実装が、setTrafficClass(int)
を使用して設定されたトラフィッククラスまたはサービス型を無視することがあるので、この Socket で setTrafficClass(int)
メソッドを使用して以前に設定された値とは異なる値がこのメソッドから返されることがあります。
SocketException
- トラフィッククラスまたはサービスタイプの値を取得する際にエラーが発生した場合。setTrafficClass(int)
public void setReuseAddress(boolean on) throws SocketException
TCP 接続をクローズする場合、接続クローズ後の一定期間、その接続がタイムアウト状態 (通常、TIME_WAIT 状態または 2MSL 待機状態と呼ばれる) にとどまる可能性があります。既知のソケットアドレスまたはポートを使用するアプリケーションの場合、ソケットアドレスまたはポートに関連する接続がタイムアウト状態にあると、ソケットを必要な SocketAddress にバインドできないことがあります。
bind(SocketAddress)
を使用してソケットをバインドする前に SO_REUSEADDR を有効にすると、以前の接続がタイムアウト状態でもソケットをバインドできます。
Socket が作成されると、SO_REUSEADDR の初期設定は無効になります。
ソケットがバインドされた (isBound()
を参照) あとで SO_REUSEADDR を有効または無効にする場合の動作は定義されていません。
on
- ソケットオプションを有効にするか無効にするかを指定SocketException
- SO_RESUEADDR ソケットオプションの有効化または無効化時にエラーが発生した場合、またはソケットがクローズされている場合。getReuseAddress()
, bind(SocketAddress)
, isClosed()
, isBound()
public boolean getReuseAddress() throws SocketException
boolean
値。SocketException
- 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合。setReuseAddress(boolean)
public void close() throws IOException
このソケットの入出力操作で現在ブロックされているすべてのスレッドが SocketException
をスローします。
ソケットが閉じられると、その後のネットワークにそのソケットを使用することはできません (つまり、再接続または再バインドはできない)。新しいソケットを作成する必要があります。
このソケットをクローズすると、このソケットの InputStream
と OutputStream
もクローズされます。
このソケットに関連するチャネルが存在する場合は、そのチャネルも閉じられます。
close
、インタフェース: Closeable
close
、インタフェース: AutoCloseable
IOException
- このソケットを閉じるときに入出力エラーが発生した場合。isClosed()
public void shutdownInput() throws IOException
ソケットで shutdownInput() を呼び出したあとにソケットの入力ストリームから読み込むと、ストリームは EOF を返します。
IOException
- このソケットを停止するときに入出力エラーが発生した場合。shutdownOutput()
, close()
, setSoLinger(boolean, int)
, isInputShutdown()
public void shutdownOutput() throws IOException
IOException
- このソケットを停止するときに入出力エラーが発生した場合。shutdownInput()
, close()
, setSoLinger(boolean, int)
, isOutputShutdown()
public String toString()
String
に変換します。public boolean isConnected()
注:ソケットを閉じても接続状態はクリアされません。つまりこのメソッドは、閉じられる前にソケットが正常に接続されていた場合、閉じられたソケット (isClosed()
を参照) には true
を返します。
public boolean isBound()
注:ソケットを閉じてもバインディング状態はクリアされません。つまりこのメソッドは、閉じられる前にソケットが正常にバインドされていた場合、閉じられたソケット (isClosed()
を参照) には true
を返します。
bind(java.net.SocketAddress)
public boolean isClosed()
close()
public boolean isInputShutdown()
shutdownInput()
public boolean isOutputShutdown()
shutdownOutput()
public static void setSocketImplFactory(SocketImplFactory fac) throws IOException
アプリケーションで新しいクライアントソケットを作成すると、ソケット実装ファクトリの createSocketImpl
メソッドが呼び出され、実際のソケットが作成されます。
このメソッドに null
を渡しても、ファクトリがすでに設定されていないかぎり、それは無操作になります。
セキュリティーマネージャーが存在する場合、この操作が許可されるように、このメソッドは最初にセキュリティーマネージャーの checkSetFactory
メソッドを呼び出します。この結果、SecurityException がスローされることがあります。
fac
- 目的のファクトリ。IOException
- ソケットファクトリの設定中に入出力エラーが発生した場合。SocketException
- ファクトリがすでに定義されている場合。SecurityException
- セキュリティーマネージャーが存在し、その checkSetFactory
メソッドでこの操作が許可されていない場合。SocketImplFactory.createSocketImpl()
, SecurityManager.checkSetFactory()
public void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
ソケットはデフォルトで、TCP/IP プロトコルを使用します。実装によっては、TCP/IP とは異なるパフォーマンス特性を持つ代替プロトコルを提供することもあります。アプリケーションは、このメソッドを使用することで、実装で利用可能なプロトコルの選択時に、これらのかね合いの取り方を示す独自の設定を表現できます。
パフォーマンス設定は、接続時間の短さ、応答時間の速さ、および帯域幅の広さの相対的な重要度を示す 3 つの整数値によって記述されます。これらの整数の絶対値は重要ではありません。ある特定のプロトコルを選択するために、これらの値が単純に比較されますが、その際、値が大きければより強い設定を示します。負の値は正の値よりも低い優先順位を表します。たとえば、アプリケーションが応答時間の速さや帯域幅の広さよりも接続時間の短さを優先する場合には、値 (1, 0, 0) を指定してこのメソッドを呼び出すことができます。アプリケーションが応答時間の速さよりも帯域幅の広さを優先し、接続時間の短さよりも応答時間の速さを優先する場合には、値 (0, 1, 2) を指定してこのメソッドを呼び出すことができます。
このソケットの接続後にこのメソッドを呼び出しても、何の効果もありません。
connectionTime
- 接続時間の短さの相対的な重要度を表す intlatency
- 応答時間の速さの相対的な重要度を表す intbandwidth
- 帯域幅の広さの相対的な重要度を表す int バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.