JavaTM Platform
Standard Ed. 6

java.net
クラス Socket

java.lang.Object
  上位を拡張 java.net.Socket
直系の既知のサブクラス:
SSLSocket

public class Socket
extends Object

このクラスは、クライアントソケット (単に「ソケット」とも呼ばれる) を実装します。ソケットとは、2 つのマシン間で通信を行う際の端点のことです。  

ソケットの実際の処理は、SocketImpl クラスのインスタンスによって実行されます。アプリケーションは、ソケット実装を作成するソケットファクトリを変更することで、ローカルファイアウォールに適したソケットを作成するように自身を構成することができます。

導入されたバージョン:
JDK1.0
関連項目:
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()
          このソケットがバインドされている端点のアドレスを返します。
 boolean getOOBInline()
          OOBINLINE が有効かどうかを調べます。
 OutputStream getOutputStream()
          このソケットの出力ストリームを返します。
 int getPort()
          このソケットの接続先のリモートポートを返します。
 int getReceiveBufferSize()
          この Socket で使われる SO_RCVBUF オプションの値を取得します。
 SocketAddress getRemoteSocketAddress()
          このソケットが接続されている端点のアドレスを返します。
 boolean getReuseAddress()
          SO_REUSEADDR が有効かどうかを調べます。
 int getSendBufferSize()
          この Socket で使われる SO_SNDBUF オプションの値を取得します。
 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 緊急データの受信) を有効または無効にします。
 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 に変換します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

Socket

public Socket()
システムでデフォルトになっているタイプの SocketImpl を使用して、接続されていないソケットを作成します。

導入されたバージョン:
JDK1.1

Socket

public Socket(Proxy proxy)
接続されていないソケットを作成します。ほかの設定にかかわらず使用すべきプロキシタイプが存在する場合は、そのタイプを指定します。  

セキュリティーマネージャーが存在する場合、その checkAccess メソッドが、プロキシのホストアドレスとポート番号を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。  

例:

パラメータ:
proxy - どのような種類のプロキシ処理を使用すべきかを指定した Proxy オブジェクト
例外:
IllegalArgumentException - プロキシの型が無効な場合、またはプロキシが null の場合
SecurityException - セキュリティーマネージャーが存在し、プロキシに接続する権限が拒否された場合
導入されたバージョン:
1.5
関連項目:
ProxySelector, Proxy

Socket

protected Socket(SocketImpl impl)
          throws SocketException
ユーザーが指定した SocketImpl を使用して、接続されていないソケットを作成します。  

パラメータ:
impl - サブクラスが Socket 上で使用する SocketImpl のインスタンス
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
JDK1.1

Socket

public Socket(String host,
              int port)
       throws UnknownHostException,
              IOException
ストリームソケットを作成し、指定されたホスト上の指定されたポート番号に接続します。  

指定されたホストが null の場合、それは、アドレスを InetAddress.getByName(null) と指定するのと等価になります。つまり、それは、ループバックインタフェースのアドレスを指定するのと等価になります。

アプリケーションでサーバーソケットファクトリを指定している場合は、そのファクトリの createSocketImpl メソッドが呼び出され、実際のソケットが作成されます。そうでない場合は「プレーンな」ソケットが作成されます。  

セキュリティーマネージャーが存在する場合、その checkAccess メソッドが、ホストアドレスと port を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。

パラメータ:
host - ホスト名。ループバックアドレスの場合は null
port - ポート番号
例外:
UnknownHostException - ホストの IP アドレスを決定できなかった場合
IOException - ソケットの生成中に入出力エラーが発生した場合
SecurityException - セキュリティーマネージャーが存在し、その checkConnect メソッドがこの操作を許可しない場合
関連項目:
setSocketImplFactory(java.net.SocketImplFactory), SocketImpl, SocketImplFactory.createSocketImpl(), SecurityManager.checkConnect(java.lang.String, int)

Socket

public Socket(InetAddress address,
              int port)
       throws IOException
ストリームソケットを作成し、指定された IP アドレスの指定されたポート番号に接続します。  

アプリケーションでサーバーソケットファクトリを指定している場合は、そのファクトリの createSocketImpl メソッドが呼び出され、実際のソケットが作成されます。そうでない場合は「プレーンな」ソケットが作成されます。  

セキュリティーマネージャーが存在する場合、その checkAccess メソッドが、ホストアドレスと port を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。

パラメータ:
address - IP アドレス
port - ポート番号
例外:
IOException - ソケットの生成中に入出力エラーが発生した場合
SecurityException - セキュリティーマネージャーが存在し、その checkConnect メソッドがこの操作を許可しない場合
関連項目:
setSocketImplFactory(java.net.SocketImplFactory), SocketImpl, SocketImplFactory.createSocketImpl(), SecurityManager.checkConnect(java.lang.String, int)

Socket

public Socket(String host,
              int port,
              InetAddress localAddr,
              int localPort)
       throws IOException
ソケットを作成し、指定されたリモートポート上の指定されたリモートホストに接続します。さらに、このソケットは、指定されたローカルアドレスとローカルポートにバインドされます。  

指定されたホストが null の場合、それは、アドレスを InetAddress.getByName(null) と指定するのと等価になります。つまり、それは、ループバックインタフェースのアドレスを指定するのと等価になります。

セキュリティーマネージャーが存在する場合、その checkAccess メソッドが、ホストアドレスと port を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。

パラメータ:
host - リモートホストの名前。ループバックアドレスの場合は null
port - リモートポート
localAddr - ソケットのバインド先のローカルアドレス
localPort - ソケットのバインド先のローカルポート
例外:
IOException - ソケットの生成中に入出力エラーが発生した場合
SecurityException - セキュリティーマネージャーが存在し、その checkConnect メソッドがこの操作を許可しない場合
導入されたバージョン:
JDK1.1
関連項目:
SecurityManager.checkConnect(java.lang.String, int)

Socket

public Socket(InetAddress address,
              int port,
              InetAddress localAddr,
              int localPort)
       throws IOException
ソケットを作成し、指定されたリモートポート上の指定されたリモートアドレスに接続します。さらに、このソケットは、指定されたローカルアドレスとローカルポートにバインドされます。  

セキュリティーマネージャーが存在する場合、その checkAccess メソッドが、ホストアドレスと port を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。

パラメータ:
address - リモートアドレス
port - リモートポート
localAddr - ソケットのバインド先のローカルアドレス
localPort - ソケットのバインド先のローカルポート
例外:
IOException - ソケットの生成中に入出力エラーが発生した場合
SecurityException - セキュリティーマネージャーが存在し、その checkConnect メソッドがこの操作を許可しない場合
導入されたバージョン:
JDK1.1
関連項目:
SecurityManager.checkConnect(java.lang.String, int)

Socket

@Deprecated
public Socket(String host,
                         int port,
                         boolean stream)
       throws IOException
推奨されていません。 UDP 転送ではなく DatagramSocket を使ってください。

ストリームソケットを作成し、指定されたホスト上の指定されたポート番号に接続します。  

指定されたホストが null の場合、それは、アドレスを InetAddress.getByName(null) と指定するのと等価になります。つまり、それは、ループバックインタフェースのアドレスを指定するのと等価になります。

stream 引数が true の場合、これはストリームソケットを作成します。stream 引数が false の場合、これはデータグラムソケットを作成します。  

アプリケーションでサーバーソケットファクトリを指定している場合は、そのファクトリの createSocketImpl メソッドが呼び出され、実際のソケットが作成されます。そうでない場合は「プレーンな」ソケットが作成されます。  

セキュリティーマネージャーが存在する場合、その checkAccess メソッドが、ホストアドレスと port を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。  

UDP ソケットを使用する場合、TCP/IP に関連するソケットオプションは適用されません。

パラメータ:
host - ホスト名。ループバックアドレスの場合は null
port - ポート番号
stream - これがストリームソケット、データグラムソケットのいずれであるかを示す boolean
例外:
IOException - ソケットの生成中に入出力エラーが発生した場合
SecurityException - セキュリティーマネージャーが存在し、その checkConnect メソッドがこの操作を許可しない場合
関連項目:
setSocketImplFactory(java.net.SocketImplFactory), SocketImpl, SocketImplFactory.createSocketImpl(), SecurityManager.checkConnect(java.lang.String, int)

Socket

@Deprecated
public Socket(InetAddress host,
                         int port,
                         boolean stream)
       throws IOException
推奨されていません。 UDP 転送ではなく DatagramSocket を使ってください。

ソケットを作成し、指定された IP アドレスにある指定されたポート番号に接続します。  

stream 引数が true の場合、これはストリームソケットを作成します。stream 引数が false の場合、これはデータグラムソケットを作成します。  

アプリケーションでサーバーソケットファクトリを指定している場合は、そのファクトリの createSocketImpl メソッドが呼び出され、実際のソケットが作成されます。そうでない場合は「プレーンな」ソケットが作成されます。

セキュリティーマネージャーが存在する場合、その checkAccess メソッドが、host.getHostAddress()port を引数に指定して呼び出されます。この結果、SecurityException がスローされることがあります。  

UDP ソケットを使用する場合、TCP/IP に関連するソケットオプションは適用されません。

パラメータ:
host - IP アドレス
port - ポート番号
stream - true の場合はストリームソケットを作成し、それ以外の場合はデータグラムソケットを作成する
例外:
IOException - ソケットの生成中に入出力エラーが発生した場合
SecurityException - セキュリティーマネージャーが存在し、その checkConnect メソッドがこの操作を許可しない場合
関連項目:
setSocketImplFactory(java.net.SocketImplFactory), SocketImpl, SocketImplFactory.createSocketImpl(), SecurityManager.checkConnect(java.lang.String, int)
メソッドの詳細

connect

public void connect(SocketAddress endpoint)
             throws IOException
このソケットをサーバーに接続します。

パラメータ:
endpoint - SocketAddress
例外:
IOException - 接続時にエラーが発生した場合
IllegalBlockingModeException - このソケットに関連するチャネルが存在し、そのチャネルが非ブロックモードである場合
IllegalArgumentException - 端点が null であるか、このソケットによってサポートされていない SocketAddress サブクラスである場合
導入されたバージョン:
1.4

connect

public void connect(SocketAddress endpoint,
                    int timeout)
             throws IOException
指定されたタイムアウト値を使って、このソケットをサーバーに接続します。タイムアウト 0 は無限のタイムアウトとして解釈されます。その後、接続が確立されるかエラーが発生するまで、接続がブロックされます。

パラメータ:
endpoint - SocketAddress
timeout - 使用するタイムアウト値 (ミリ秒)
例外:
IOException - 接続時にエラーが発生した場合
SocketTimeoutException - 接続する前にタイムアウトが過ぎた場合
IllegalBlockingModeException - このソケットに関連するチャネルが存在し、そのチャネルが非ブロックモードである場合
IllegalArgumentException - 端点が null であるか、このソケットによってサポートされていない SocketAddress サブクラスである場合
導入されたバージョン:
1.4

bind

public void bind(SocketAddress bindpoint)
          throws IOException
ソケットをローカルアドレスにバインドします。  

アドレスが null の場合は、システムにより一時的なポートと有効なローカルアドレスが選択されてソケットがバインドされます。

パラメータ:
bindpoint - バインド先の SocketAddress
例外:
IOException - バインド操作に失敗した場合、あるいはソケットがすでにバインドされている場合
IllegalArgumentException - bindpoint が、このソケットによってサポートされていない SocketAddress サブクラスである場合
導入されたバージョン:
1.4
関連項目:
isBound()

getInetAddress

public InetAddress getInetAddress()
ソケットの接続先のアドレスを返します。

戻り値:
このソケットの接続先のリモート IP アドレス。ソケットが接続されていない場合は null

getLocalAddress

public InetAddress getLocalAddress()
ソケットのバインド先のローカルアドレスを取得します。

戻り値:
ソケットのバインド先のローカルアドレス。ソケットがまだバインドされていない場合は InetAddress.anyLocalAddress()
導入されたバージョン:
JDK1.1

getPort

public int getPort()
このソケットの接続先のリモートポートを返します。

戻り値:
このソケットの接続先のリモートポート番号。ソケットがまだ接続されていない場合は 0

getLocalPort

public int getLocalPort()
このソケットのバインド先のローカルポートを返します。

戻り値:
このソケットのバインド先のローカルポート番号。ソケットがまだバインドされていない場合は -1

getRemoteSocketAddress

public SocketAddress getRemoteSocketAddress()
このソケットが接続されている端点のアドレスを返します。ソケットが接続されていない場合は null を返します。

戻り値:
このソケットのリモート端点を表す SocketAddress。ソケットがまだ接続されていない場合は null
導入されたバージョン:
1.4
関連項目:
getInetAddress(), getPort(), connect(SocketAddress, int), connect(SocketAddress)

getLocalSocketAddress

public SocketAddress getLocalSocketAddress()
このソケットがバインドされている端点のアドレスを返します。ソケットがバインドされていない場合は null を返します。

戻り値:
このソケットのローカル端点を表す SocketAddress。ソケットがまだバインドされていない場合は null
導入されたバージョン:
1.4
関連項目:
getLocalAddress(), getLocalPort(), bind(SocketAddress)

getChannel

public SocketChannel getChannel()
このソケットに関連する固有の SocketChannel オブジェクトを返します (存在する場合)。

チャネル自体が SocketChannel.open または ServerSocketChannel.accept メソッドを使用して作成された場合にだけ、ソケットにチャネルが存在します。

戻り値:
このソケットに関連付けられたソケットチャネル。このソケットがチャネル用に作成されたものでない場合は null
導入されたバージョン:
1.4

getInputStream

public InputStream getInputStream()
                           throws IOException
このソケットの入力ストリームを返します。

このソケットにチャネルが関連付けられている場合、結果として得られる入力ストリームは、その操作のすべてをチャネルに委譲します。そのチャネルが非ブロックモードである場合、入力ストリームの read 操作が IllegalBlockingModeException をスローします。

異常な状況下では、リモートホストやネットワークソフトウェアによって使用している接続が解除される可能性があります (TCP 接続の場合であれば接続がリセットされるなど)。接続の解除がネットワークソフトウェアによって検出された場合、返された入力ストリームに対して次のことが当てはまります。

返された InputStream をクローズすると、関連付けられたソケットがクローズします。

戻り値:
このソケットからバイトを読み込むための入力ストリーム
例外:
IOException - 入力ストリームの作成時に入出力エラーが発生した場合、ソケットがクローズされている場合、ソケットが接続されていない場合、または shutdownInput() を使ってソケットの入力がシャットダウンされた場合

getOutputStream

public OutputStream getOutputStream()
                             throws IOException
このソケットの出力ストリームを返します。

このソケットにチャネルが関連付けられている場合、結果として得られる出力ストリームは、その操作のすべてをチャネルに委譲します。チャネルが非ブロックモードである場合、出力ストリームの write 操作が IllegalBlockingModeException をスローします。

返された OutputStream をクローズすると、関連付けられたソケットがクローズします。

戻り値:
このソケットにバイトを書き込むための出力ストリーム
例外:
IOException - 出力ストリームの作成中に入出力エラーが発生した場合、またはソケットが接続されていない場合

setTcpNoDelay

public void setTcpNoDelay(boolean on)
                   throws SocketException
TCP_NODELAY を有効または無効にします (Nagle のアルゴリズムの有効、無効の切り替え)。

パラメータ:
on - TCP_NODELAY を有効にする場合は true、無効にする場合は false
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
JDK1.1
関連項目:
getTcpNoDelay()

getTcpNoDelay

public boolean getTcpNoDelay()
                      throws SocketException
TCP_NODELAY が有効かどうかを調べます。

戻り値:
TCP_NODELAY が有効かどうかを示す boolean
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
JDK1.1
関連項目:
setTcpNoDelay(boolean)

setSoLinger

public void setSoLinger(boolean on,
                        int linger)
                 throws SocketException
指定された遅延時間 (秒) を使って SO_LINGER を有効または無効にします。タイムアウトの最大値はプラットフォームに固有です。 設定はソケットを閉じる場合にだけ影響します。

パラメータ:
on - 遅延時間を有効にするかどうかを指定
linger - on が true の場合は、遅延時間
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
IllegalArgumentException - 遅延時間の値が負の数値である場合
導入されたバージョン:
JDK1.1
関連項目:
getSoLinger()

getSoLinger

public int getSoLinger()
                throws SocketException
SO_LINGER の設定を返します。戻り値 -1 は、このオプションが無効になっていることを意味します。 設定はソケットを閉じる場合にだけ影響します。

戻り値:
SO_LINGER の設定
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
JDK1.1
関連項目:
setSoLinger(boolean, int)

sendUrgentData

public void sendUrgentData(int data)
                    throws IOException
このソケット上で 1 バイトの緊急データを送信します。送信されるバイトは、データパラメータの最下位の 8 ビットです。この緊急バイトは、ソケットの OutputStream への先行するすべての書き込みの後、OutputStream への後続のすべての書き込みの前に送信されます。

パラメータ:
data - 送信するデータのバイト
例外:
IOException - データ送信時にエラーが発生した場合
導入されたバージョン:
1.4

setOOBInline

public void setOOBInline(boolean on)
                  throws SocketException
OOBINLINE (TCP 緊急データの受信) を有効または無効にします。 デフォルトではこのオプションは無効になっており、ソケット上で受信された TCP 緊急データは何の通知もなく破棄されます。ユーザーが緊急データの受信を望んでいる場合は、このオプションを有効にしてください。有効にした場合、緊急データは通常データとともにインラインで受信されます。  

受信緊急データの処理に関しては、限られたサポートしか提供されていないことに注意してください。特に、高位レベルのプロトコルが提供されていない場合、受信する緊急データの通知は提供されず、通常データと緊急データを区別する機能はありません。

パラメータ:
on - OOBINLINE を有効にする場合は true、無効にする場合は false
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
1.4
関連項目:
getOOBInline()

getOOBInline

public boolean getOOBInline()
                     throws SocketException
OOBINLINE が有効かどうかを調べます。

戻り値:
OOBINLINE が有効かどうかを示す boolean
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
1.4
関連項目:
setOOBInline(boolean)

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException
指定されたタイムアウト (ミリ秒) を使って SO_TIMEOUT を有効または無効にします。このオプションを 0 以外のタイムアウトに設定すると、この Socket に関連付けられた InputStream の read() 呼び出しが、その時間の間だけブロックされます。タイムアウトの期限が切れると、Socket がまだ有効であっても java.net.SocketTimeoutException が発行されます。このオプションは、ブロック処理に入る前に有効にしておく必要があります。タイムアウトは 0 より大きい値を指定します。 タイムアウト 0 は無限のタイムアウトとして解釈されます。

パラメータ:
timeout - ミリ秒で表される、指定されたタイムアウト
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
JDK 1.1
関連項目:
getSoTimeout()

getSoTimeout

public int getSoTimeout()
                 throws SocketException
SO_TIMEOUT の設定を返します。このオプションが無効 (タイムアウトが無限) の場合は 0 を返します。

戻り値:
SO_TIMEOUT の設定
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
JDK1.1
関連項目:
setSoTimeout(int)

setSendBufferSize

public void setSendBufferSize(int size)
                       throws SocketException
この Socket の SO_SNDBUF オプションを指定された値に設定します。SO_SNDBUF オプションは、使用するネットワーク入出力バッファーに設定するサイズのヒントとして、プラットフォームのネットワークコードが使います。

SO_SNDBUF はヒントなので、アプリケーションでバッファーのサイズ設定を調べる必要がある場合は、getSendBufferSize() を呼び出してください。

パラメータ:
size - 送信バッファーサイズの設定サイズ。この値は 0 より大きくなければいけません。
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
IllegalArgumentException - 値が 0 または負の値である場合
導入されたバージョン:
1.2
関連項目:
getSendBufferSize()

getSendBufferSize

public int getSendBufferSize()
                      throws SocketException
この Socket で使われる SO_SNDBUF オプションの値を取得します。これは、この Socket で出力用としてプラットフォームが使うバッファーのサイズです。

戻り値:
この Socket の SO_SNDBUF オプションの値
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
1.2
関連項目:
setSendBufferSize(int)

setReceiveBufferSize

public void setReceiveBufferSize(int size)
                          throws SocketException
この Socket の SO_RCVBUF オプションを指定された値に設定します。SO_RCVBUF オプションは、使用するネットワーク入出力バッファーに設定するサイズのヒントとして、プラットフォームのネットワークコードが使います。

受信バッファーのサイズを増やすと、大規模な接続でのネットワーク入出力のパフォーマンスを上げることができます。一方、サイズを減らすと、受信データのバックログを減らすことができます。

SO_RCVBUF はヒントなので、アプリケーションでバッファーのサイズ設定を調べる必要がある場合は、getReceiveBufferSize() を呼び出してください。

SO_RCVBUF の値は、リモートピアに通知される TCP 受信ウィンドウの設定にも使用されます。一般に、ソケットが接続されているかぎり、このウィンドウサイズはいつでも変更できます。ただし、64K を超える受信ウィンドウを要求する場合は、ソケットをリモートピアに接続するに変更を要求する必要があります。次の 2 つの場合に注意してください。

  1. ServerSocket から受け入れたソケットの場合、ServerSocket をローカルアドレスにバインドする前に、ServerSocket.setReceiveBufferSize(int) を呼び出してこれを実行する必要があります。

  2. クライアントソケットの場合、ソケットをそのリモートピアに接続する前に、setReceiveBufferSize() を呼び出す必要があります。

パラメータ:
size - 受信バッファーサイズの設定サイズ。この値は 0 より大きくなければいけません。
例外:
IllegalArgumentException - 値が 0 または負の値である場合
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
1.2
関連項目:
getReceiveBufferSize(), ServerSocket.setReceiveBufferSize(int)

getReceiveBufferSize

public int getReceiveBufferSize()
                         throws SocketException
この Socket で使われる SO_RCVBUF オプションの値を取得します。これは、この Socket で入力用としてプラットフォームが使うバッファーのサイズです。

戻り値:
この Socket の SO_RCVBUF オプションの値
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
1.2
関連項目:
setReceiveBufferSize(int)

setKeepAlive

public void setKeepAlive(boolean on)
                  throws SocketException
SO_KEEPALIVE を有効または無効にします。

パラメータ:
on - ソケットをオンのままにしておくかどうかを指定
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
1.3
関連項目:
getKeepAlive()

getKeepAlive

public boolean getKeepAlive()
                     throws SocketException
SO_KEEPALIVE が有効かどうかを調べます。

戻り値:
SO_KEEPALIVE が有効かどうかを示す boolean
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
1.3
関連項目:
setKeepAlive(boolean)

setTrafficClass

public void setTrafficClass(int tc)
                     throws SocketException
このソケットから送信されるパケットの IP ヘッダーのトラフィッククラスまたはサービスタイプのオクテットを設定します。使用するネットワーク実装がこの値を無視することがあるので、アプリケーションではこの値をヒントと考えてください。

tc の範囲は 0 <= tc <= 255なければなりません。そうでない場合は、IllegalArgumentException がスローされます。 

注: 

IP (Internet Protocol) バージョン 4 の場合、RFC 1349 で説明されているように、この値は優先度の高い octet と TOS フィールドで構成されます。TOS フィールドは、次のようにビット単位の論理和によって作成されるビットセットです。 

最下位ビットは、MBZ (0 でなければならない) ビットに対応するので、常に無視されます。  

優先フィールドにビットを設定すると、操作が許可されないことを示す SocketException になることがあります。  

RFC 1122 のセクション 4.2.4.2 に示されているように、準拠した TCP 実装は、接続の寿命がある間はアプリケーションが TOS フィールドを変更できるようにすべきです (ただし、必ずしもそうする必要はない)。したがって、TCP 接続の確立後にサービスタイプフィールドを変更できるかどうかは、使用するプラットフォーム内の実装によって決まります。アプリケーションは、接続後に TOS フィールドを変更できると仮定すべきではありません。  

IP (Internet Protocol) バージョン 6 の場合、tc は IP ヘッダーの sin6_flowinfo フィールドに格納される値です。

パラメータ:
tc - ビットセットの int
例外:
SocketException - トラフィッククラスまたはサービスタイプの設定時にエラーが発生した場合
導入されたバージョン:
1.4
関連項目:
getTrafficClass()

getTrafficClass

public int getTrafficClass()
                    throws SocketException
このソケットから送信されるパケットの IP ヘッダーのトラフィッククラスまたはサービスタイプを取得します。 

使用するネットワーク実装が、setTrafficClass(int) を使用して設定されたトラフィッククラスまたはサービスタイプを無視することがあるので、この Socket で setTrafficClass(int) メソッドを使用して以前に設定された値とは異なる値がこのメソッドから返されることがあります。

戻り値:
すでに設定されているトラフィッククラスまたはサービス型
例外:
SocketException - トラフィッククラスまたはサービスタイプの値を取得する際にエラーが発生した場合
導入されたバージョン:
1.4
関連項目:
setTrafficClass(int)

setReuseAddress

public void setReuseAddress(boolean on)
                     throws SocketException
SO_REUSEADDR ソケットオプションを有効または無効にします。  

TCP 接続をクローズする場合、接続クローズ後の一定期間、その接続がタイムアウト状態 (通常、TIME_WAIT 状態または 2MSL 待機状態と呼ばれる) にとどまる可能性があります。周知のソケットアドレスまたはポートを使用するアプリケーションの場合、ソケットアドレスまたはポートに関連する接続がタイムアウト状態にあると、ソケットを必要な SocketAddress にバインドできないことがあります。  

bind(SocketAddress) を使用してソケットをバインドする前に SO_REUSEADDR を有効にすると、以前の接続がタイムアウト状態でもソケットをバインドすることができます。  

Socket が作成されると、SO_REUSEADDR の初期設定は無効になります。  

ソケットがバインドされた (isBound() を参照) あとで SO_REUSEADDR を有効または無効にする場合の動作は定義されていません。

パラメータ:
on - ソケットオプションを有効にするか無効にするかを指定
例外:
SocketException - SO_RESUEADDR ソケットオプションの有効化または無効化時にエラーが発生した場合、またはソケットがクローズされている場合
導入されたバージョン:
1.4
関連項目:
getReuseAddress(), bind(SocketAddress), isClosed(), isBound()

getReuseAddress

public boolean getReuseAddress()
                        throws SocketException
SO_REUSEADDR が有効かどうかを調べます。

戻り値:
SO_REUSEADDR が有効かどうかを示す boolean
例外:
SocketException - 使用しているプロトコルでエラー (TCP エラーなど) が発生した場合
導入されたバージョン:
1.4
関連項目:
setReuseAddress(boolean)

close

public void close()
           throws IOException
このソケットを閉じます。  

現在このソケットの入出力操作でブロックされているすべてのスレッドが SocketException をスローします。  

ソケットが閉じられると、その後のネットワークにそのソケットを使用することはできません (つまり、再接続または再バインドはできない)。新しいソケットを作成する必要があります。

このソケットをクローズすると、このソケットの InputStreamOutputStream もクローズされます。

このソケットに関連するチャネルが存在する場合は、そのチャネルも閉じられます。

例外:
IOException - このソケットを閉じるときに入出力エラーが発生した場合
関連項目:
isClosed()

shutdownInput

public void shutdownInput()
                   throws IOException
このソケットの入力ストリームを「ストリームの終わり」に設定します。ソケットの入力ストリーム側に送信されたデータはすべて、確認されたあと何の通知もなく破棄されます。  

ソケットで shutdownInput() を呼び出したあとにソケットの入力ストリームから読み込むと、ストリームは EOF を返します。

例外:
IOException - このソケットを停止するときに入出力エラーが発生した場合
導入されたバージョン:
1.3
関連項目:
shutdownOutput(), close(), setSoLinger(boolean, int), isInputShutdown()

shutdownOutput

public void shutdownOutput()
                    throws IOException
このソケットの出力ストリームを無効にします。TCP ソケットの場合、それまでに書き込まれたデータのすべてが、TCP の通常の接続終了シーケンスに従って送信されます。 ソケットで shutdownOutput() を呼び出したあとにソケットの出力ストリームに書き込むと、ストリームは IOException をスローします。

例外:
IOException - このソケットを停止するときに入出力エラーが発生した場合
導入されたバージョン:
1.3
関連項目:
shutdownInput(), close(), setSoLinger(boolean, int), isOutputShutdown()

toString

public String toString()
このソケットを String に変換します。

オーバーライド:
クラス Object 内の toString
戻り値:
このソケットの文字列表現

isConnected

public boolean isConnected()
ソケットの接続状態を返します。

戻り値:
ソケットがサーバーに正常に接続されている場合は true
導入されたバージョン:
1.4

isBound

public boolean isBound()
ソケットのバインディング状態を返します。

戻り値:
ソケットが正常にアドレスにバインドされている場合は true
導入されたバージョン:
1.4
関連項目:
bind(java.net.SocketAddress)

isClosed

public boolean isClosed()
ソケットの閉じた状態を返します。

戻り値:
ソケットが閉じた場合は true
導入されたバージョン:
1.4
関連項目:
close()

isInputShutdown

public boolean isInputShutdown()
ソケット接続の読み込み側の半分が閉じているかどうかを返します。

戻り値:
ソケットの入力が停止した場合は true
導入されたバージョン:
1.4
関連項目:
shutdownInput()

isOutputShutdown

public boolean isOutputShutdown()
ソケット接続の書き込み側の半分が閉じているかどうかを返します。

戻り値:
ソケットの出力が停止した場合は true
導入されたバージョン:
1.4
関連項目:
shutdownOutput()

setSocketImplFactory

public static void setSocketImplFactory(SocketImplFactory fac)
                                 throws IOException
アプリケーションのクライアントソケット実装ファクトリを設定します。ファクトリを指定できるのは一度だけです。  

アプリケーションで新しいクライアントソケットを作成すると、ソケット実装ファクトリの createSocketImpl メソッドが呼び出され、実際のソケットが作成されます。  

このメソッドに null を渡しても、ファクトリがすでに設定されていないかぎり、それは無操作になります。

セキュリティーマネージャーが存在する場合、このメソッドは最初にセキュリティーマネージャーの checkSetFactory メソッドを呼び出すことにより、この操作が許可されていることを確認します。この結果、SecurityException がスローされることがあります。

パラメータ:
fac - 目的のファクトリ
例外:
IOException - ソケットファクトリの設定中に入出力エラーが発生した場合
SocketException - ファクトリがすでに定義されている場合
SecurityException - セキュリティーマネージャーが存在し、その checkSetFactory メソッドがこの操作を許可しない場合
関連項目:
SocketImplFactory.createSocketImpl(), SecurityManager.checkSetFactory()

setPerformancePreferences

public void setPerformancePreferences(int connectionTime,
                                      int latency,
                                      int bandwidth)
このソケットのパフォーマンス設定を行います。

ソケットはデフォルトで、TCP/IP プロトコルを使用します。実装によっては、TCP/IP とは異なるパフォーマンス特性を持つ代替プロトコルを提供することもあります。アプリケーションは、このメソッドを使用することで、実装で利用可能なプロトコルの選択時に、これらのかね合いの取り方を示す独自の設定を表現できます。

パフォーマンス設定は、接続時間の短さ、応答時間の速さ、および帯域幅の広さの相対的な重要度を示す 3 つの整数値によって記述されます。これらの整数の絶対値は重要ではありません。ある特定のプロトコルを選択するために、これらの値が単純に比較されますが、その際、値が大きければより強い設定を示します。負の値は正の値よりも低い優先順位を表します。たとえば、アプリケーションが応答時間の速さや帯域幅の広さよりも接続時間の短さを優先する場合には、値 (1, 0, 0) を指定してこのメソッドを呼び出すことができます。アプリケーションが応答時間の速さよりも帯域幅の広さを優先し、接続時間の短さよりも待ち時間の短さを優先する場合には、値 (0, 1, 2) を指定してこのメソッドを呼び出すことができます。

このソケットの接続後にこのメソッドを呼び出しても、何の効果もありません。

パラメータ:
connectionTime - 接続時間の短さの相対的な重要度を表す int
latency - 応答時間の速さの相対的な重要度を表す int
bandwidth - 帯域幅の広さの相対的な重要度を表す int
導入されたバージョン:
1.5

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。