JavaTM 2 Platform
Std. Ed. v1.3

java.net
クラス Socket

java.lang.Object
  |
  +--java.net.Socket

public class Socket
extends Object

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

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

導入されたバージョン:
JDK1.0
関連項目:
setSocketImplFactory(java.net.SocketImplFactory), SocketImpl

コンストラクタの概要
protected 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)
          ソケットを作成し、指定されたリモートポート上の指定されたリモートアドレスに接続します。
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 close()
          このソケットを閉じます。
 InetAddress getInetAddress()
          ソケットの接続先のアドレスを返します。
 InputStream getInputStream()
          このソケットの入力ストリームを返します。
 boolean getKeepAlive()
          SO_KEEPALIVE が有効かどうかを調べます。
 InetAddress getLocalAddress()
          ソケットのバインド先のローカルアドレスを取得します。
 int getLocalPort()
          このソケットのバインド先のローカルポートを返します。
 OutputStream getOutputStream()
          このソケットの出力ストリームを返します。
 int getPort()
          このソケットの接続先のリモートポートを返します。
 int getReceiveBufferSize()
          この Socket で使われる SO_RCVBUF オプションの値を取得します。
 int getSendBufferSize()
          この Socket で使われる SO_SNDBUF オプションの値を取得します。
 int getSoLinger()
          SO_LINGER の設定を返します。
 int getSoTimeout()
          SO_TIMEOUT の設定を返します。
 boolean getTcpNoDelay()
          TCP_NODELAY が有効かどうかを調べます。
 void setKeepAlive(boolean on)
          SO_KEEPALIVE を有効または無効にします。
 void setReceiveBufferSize(int size)
          SO_RCVBUF オプションを、この Socket に指定された値に設定します。
 void setSendBufferSize(int size)
          SO_SNDBUF オプションを、この Socket に指定された値に設定します。
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 shutdownInput()
          このソケットの入力ストリームを「ストリームの最後」に配置します。
 void shutdownOutput()
          このソケットの出力ストリームを無効にします。
 String toString()
          このソケットを String に変換します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

Socket

protected Socket()
システムでデフォルトになっているタイプの SocketImpl を使用して、接続されていないソケットを作成します。
導入されたバージョン:
JDK1.1

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
ストリームソケットを作成し、指定されたホスト上の指定されたポート番号に接続します。

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

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

パラメータ:
host - ホスト名
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 メソッドが呼び出され、実際のソケットが作成されます。そうでない場合は「プレーンな」ソケットが作成されます。

セキュリティマネージャが存在する場合、セキュリティマネージャの checkConnect が、引数としてホストアドレスと 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
ソケットを作成し、指定されたリモートポート上の指定されたリモートホストに接続します。ソケットは、指定されたローカルアドレスとポートにバインドされます。

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

パラメータ:
host - リモートホスト名
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
ソケットを作成し、指定されたリモートポート上の指定されたリモートアドレスに接続します。ソケットは、指定されたローカルアドレスとポートにバインドされます。

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

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

Socket

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

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

stream 引数に true を指定すると、ストリームソケットが作成されます。stream 引数に false を指定すると、データグラムソケットが作成されます。

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

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

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

Socket

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

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

stream 引数に true を指定すると、ストリームソケットが作成されます。stream 引数に false を指定すると、データグラムソケットが作成されます。

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

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

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

getInetAddress

public InetAddress getInetAddress()
ソケットの接続先のアドレスを返します。
戻り値:
このソケットの接続先のリモート IP アドレス

getLocalAddress

public InetAddress getLocalAddress()
ソケットのバインド先のローカルアドレスを取得します。
戻り値:
ソケットのバインド先のローカルアドレス
導入されたバージョン:
JDK1.1

getPort

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

getLocalPort

public int getLocalPort()
このソケットのバインド先のローカルポートを返します。
戻り値:
このソケットの接続先のローカルポート番号

getInputStream

public InputStream getInputStream()
                           throws IOException
このソケットの入力ストリームを返します。
戻り値:
このソケットからバイトを読み込むための入力ストリーム
例外:
IOException - 入力ストリームの作成中に入出力エラーが発生した場合

getOutputStream

public OutputStream getOutputStream()
                             throws IOException
このソケットの出力ストリームを返します。
戻り値:
このソケットにバイトを書き込むための出力ストリーム
例外:
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)

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException
指定されたタイムアウト (ミリ秒単位) を使用して、SO_TIMEOUT を有効または無効にします。このオプションにゼロ以外のタイムアウトを設定して、この Socket に関連した InputStream に対して read() を呼び出すと、設定した時間だけブロックされます。タイムアウトが過ぎると、Socket は有効なまま java.io.InterruptedIOException が発生します。このオプションは、ブロック操作に入る前に有効にしておく必要があります。タイムアウトにはゼロより大きい値を指定します。タイムアウトにゼロを指定すると、タイムアウトは無限と解釈されます。
パラメータ:
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
SO_SNDBUF オプションを、この Socket に指定された値に設定します。SO_SNDBUF オプションは、使用するネットワーク入出力バッファに設定するサイズのヒントとして、プラットフォームのネットワークコードが使います。

バッファのサイズを増やすと、大規模な接続でのネットワーク入出力のパフォーマンスを上げることができます。一方、サイズを減らすと、受信データのバックログを減らすことができます。UDP の場合は、この値により、この Socket を通じて送信されるパケットの最大サイズが設定されます。

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

パラメータ:
size - 送信バッファ用として設定するサイズ。0 より大きい値を指定する必要がある
例外:
SocketException - 基本となるプロトコルで TCP エラーなどのエラーが発生した場合
IllegalArgumentException - 値が 0 または負の値である場合
関連項目:
getSendBufferSize()

getSendBufferSize

public int getSendBufferSize()
                      throws SocketException
この Socket で使われる SO_SNDBUF オプションの値を取得します。これは、この Socket で出力用としてプラットフォームが使うバッファのサイズです。
戻り値:
この Socket の SO_SNDBUF オプションの値
例外:
SocketException - 基本となるプロトコルで TCP エラーなどのエラーが発生した場合
関連項目:
setSendBufferSize(int)

setReceiveBufferSize

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

バッファのサイズを増やすと、大規模な接続でのネットワーク入出力のパフォーマンスを上げることができます。一方、サイズを減らすと、受信データのバックログを減らすことができます。UDP の場合は、この値により、この Socket を通じて送信されるパケットの最大サイズが設定されます。

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

パラメータ:
size - 受信バッファ用として設定するサイズ。0 より大きい値を指定する必要がある
例外:
IllegalArgumentException - 値が 0 または負の値である場合
SocketException - 基本となるプロトコルで TCP エラーなどのエラーが発生した場合
関連項目:
getReceiveBufferSize()

getReceiveBufferSize

public int getReceiveBufferSize()
                         throws SocketException
この Socket で使われる SO_RCVBUF オプションの値を取得します。これは、この Socket で入力用としてプラットフォームが使うバッファのサイズです。
戻り値:
この Socket の SO_RCVBUF オプションの値
例外:
SocketException - 基本となるプロトコルで TCP エラーなどのエラーが発生した場合
関連項目:
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)

close

public void close()
           throws IOException
このソケットを閉じます。
例外:
IOException - このソケットを閉じるときに入出力エラーが発生した場合

shutdownInput

public void shutdownInput()
                   throws IOException
このソケットの入力ストリームを「ストリームの最後」に配置します。ソケットの入力ストリーム側に送信されたデータは確認され、そのまま破棄されます。 ソケットで shutdownInput() を呼び出したあとにソケットの入力ストリームから読み込むと、ストリームは EOF を返します。
例外:
IOException - このソケットを停止するときに入出力エラーが発生した場合
関連項目:
shutdownOutput(), close(), setSoLinger(boolean, int)

shutdownOutput

public void shutdownOutput()
                    throws IOException
このソケットの出力ストリームを無効にします。TCP ソケットの場合、すでに書き込まれているデータが送信され、そのあとに TCP の通常の接続終了処理が続きます。 ソケットで shutdownOutput() を呼び出したあとにソケットの出力ストリームに書き込むと、ストリームは IOException をスローします。
例外:
IOException - このソケットを停止するときに入出力エラーが発生した場合
関連項目:
shutdownInput(), close(), setSoLinger(boolean, int)

toString

public String toString()
このソケットを String に変換します。
オーバーライド:
クラス Object 内の toString
戻り値:
このソケットの文字列表現

setSocketImplFactory

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

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

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

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

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.