モジュール java.base
パッケージ java.net

クラスSocket

  • すべての実装されたインタフェース:
    Closeable, AutoCloseable
    直系の既知のサブクラス:
    SSLSocket

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

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

    導入されたバージョン:
    1.0
    関連項目:
    setSocketImplFactory(java.net.SocketImplFactory), SocketImpl, SocketChannel
    • コンストラクタのサマリー

      コンストラクタ 
      修飾子 コンストラクタ 説明
        Socket()
      システムでデフォルトになっているタイプのSocketImplを使用して、接続されていないソケットを作成します。
        Socket​(String host, int port)
      ストリーム・ソケットを作成し、指定されたホスト上の指定されたポート番号に接続します。
        Socket​(String host, int port, boolean stream)
      非推奨。
      UDP転送ではなくDatagramSocketを使ってください。
        Socket​(String host, int port, InetAddress localAddr, int localPort)
      ソケットを作成し、指定されたリモート・ポート上の指定されたリモート・ホストに接続します。
        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を使用して、接続されていないソケットを作成します。
    • メソッドのサマリー

      すべてのメソッド 静的メソッド インスタンス・メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      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()
      SO_OOBINLINEが有効かどうかを調べます。
      <T> T getOption​(SocketOption<T> name)
      ソケット・オプションの値を返します。
      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()
      Returns setting for SO_TIMEOUT.このオプションが無効(タイム・アウトが無限)の場合は0を返します。
      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)
      SO_OOBINLINE (TCP緊急データの受信)を有効または無効にします。デフォルトではこのオプションは無効になっており、ソケット上で受信されたTCP緊急データは何の通知もなく破棄されます。
      <T> Socket setOption​(SocketOption<T> name, T value)
      ソケット・オプションの値を設定します。
      void setPerformancePreferences​(int connectionTime, int latency, int bandwidth)
      このソケットのパフォーマンス設定を行います。
      void setReceiveBufferSize​(int size)
      このSocketSO_RCVBUFオプションを指定された値に設定します。
      void setReuseAddress​(boolean on)
      SO_REUSEADDRソケット・オプションを有効または無効にします。
      void setSendBufferSize​(int size)
      このSocketSO_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()
      このソケットの出力ストリームを無効にします。
      Set<SocketOption<?>> supportedOptions()
      このソケットでサポートされているソケット・オプションのセットを返します。
      String toString()
      このソケットをStringに変換します。
    • コンストラクタの詳細

      • Socket

        public Socket()
        システムでデフォルトになっているタイプのSocketImplを使用して、接続されていないソケットを作成します。
        導入されたバージョン:
        1.1
      • 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−セキュリティ・マネージャが存在し、プロキシに接続する権限が拒否された場合。
        導入されたバージョン:
        1.5
        関連項目:
        ProxySelectorProxy
      • Socket

        protected Socket​(SocketImpl impl)
                  throws SocketException
        ユーザーが指定したSocketImplを使用して、接続されていないソケットを作成します。
        パラメータ:
        impl - サブクラスがSocket上で使用するSocketImplのインスタンス。
        例外:
        SocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
        導入されたバージョン:
        1.1
      • Socket

        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)
      • Socket

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

        アプリケーションでソケット・ファクトリを指定している場合は、そのファクトリの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)
      • Socket

        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メソッドが接続先への接続を許可しないか、そのcheckListenメソッドがローカル・ポートへのバインドを許可しない場合。
        IllegalArgumentException - portパラメータまたはlocalPortパラメータが指定された有効なポート値の範囲(0から65535)外である場合。
        導入されたバージョン:
        1.1
        関連項目:
        SecurityManager.checkConnect(java.lang.String, int)
      • Socket

        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メソッドが接続先への接続を許可しないか、そのcheckListenメソッドがローカル・ポートへのバインドを許可しない場合。
        IllegalArgumentException - portパラメータまたはlocalPortパラメータが指定された有効なポート値の範囲(0から65535)外である場合。
        NullPointerException - addressがnullである場合。
        導入されたバージョン:
        1.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メソッドが呼び出され、実際のソケットが作成されます。 そうでない場合は「プレーンな」ソケットが作成されます。

        セキュリティ・マネージャが存在する場合、その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)
      • Socket

        @Deprecated
        public Socket​(InetAddress host,
                      int port,
                      boolean stream)
               throws IOException
        非推奨。
        UDP転送ではなくDatagramSocketを使ってください。
        ソケットを作成し、指定されたIPアドレスにある指定されたポート番号に接続します。

        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)
    • メソッドの詳細

      • 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サブクラスである場合
        SecurityException - セキュリティ・マネージャが存在し、そのcheckListenメソッドがローカル・ポートへのバインドを許可しない場合。
        導入されたバージョン:
        1.4
        関連項目:
        isBound()
      • getInetAddress

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

        ソケットが閉じられる前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先アドレスを返します。

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

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

        セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャのcheckConnectメソッドがローカル・アドレスおよび-1を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック・アドレスが返されます。

        戻り値:
        ソケットのバインド先のローカル・アドレス。セキュリティ・マネージャによって拒否された場合はループバック・アドレス。ソケットが閉じられているか、まだバインドされていない場合はワイルドカード・アドレス。
        導入されたバージョン:
        1.1
        関連項目:
        SecurityManager.checkConnect(java.lang.String, int)
      • 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()
        このソケットのバインド先の端点のアドレスを返します。

        InetSocketAddress が表す端点にバインドされているソケットが閉じられている場合、このメソッドはソケットが閉じられたあともInetSocketAddressを返します。 その場合、返されたInetSocketAddressのアドレスはワイルドカード・アドレスで、そのポートはバインド先のローカル・ポートです。

        セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャのcheckConnectメソッドがローカル・アドレスおよび-1を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック・アドレスを表すSocketAddressと、このソケットのバインド先であるローカル・ポートが返されます。

        戻り値:
        このソケットのローカル端点を表すSocketAddress。セキュリティ・マネージャによって拒否された場合はループバック・アドレスを表すSocketAddress。ソケットがまだバインドされていない場合はnull
        導入されたバージョン:
        1.4
        関連項目:
        getLocalAddress(), getLocalPort(), bind(SocketAddress), SecurityManager.checkConnect(java.lang.String, int)
      • getChannel

        public SocketChannel getChannel()
        このソケットに関連付けられた一意のSocketChannelオブジェクトを返します(存在する場合)。

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

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

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

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

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

        • ネットワーク・ソフトウェアがソケットによってバッファリングされたバイトを破棄する可能性がある。 ネットワーク・ソフトウェアによって破棄されていないバイトは、readを使って読み取ることができる。

        • ソケットでバッファリングされたバイトがない場合、またはバッファリングされたすべてのバイトがreadによって消費された場合、以降のreadへの呼出しはすべて、IOExceptionをスローします。

        • ソケットでバッファリングされたバイトがなく、ソケットがcloseを使用して閉じられていない場合、available0を返します。

        返された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エラーなど)が発生した場合。
        導入されたバージョン:
        1.1
        関連項目:
        getTcpNoDelay()
      • getTcpNoDelay

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

        public void setSoLinger​(boolean on,
                                int linger)
                         throws SocketException
        指定された遅延時間(秒)を使ってSO_LINGERを有効または無効にします。 タイム・アウトの最大値はプラットフォームに固有です。 設定はソケットを閉じる場合にだけ影響します。
        パラメータ:
        on−遅延時間を有効にするかどうかを指定。
        linger−onがtrueの場合は、遅延時間。
        例外:
        SocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
        IllegalArgumentException−遅延時間の値が負の数値である場合。
        導入されたバージョン:
        1.1
        関連項目:
        getSoLinger()
      • getSoLinger

        public int getSoLinger()
                        throws SocketException
        Returns setting for SO_LINGER.戻り値 -1は、このオプションが無効になっていることを意味します。 設定はソケットを閉じる場合にだけ影響します。
        戻り値:
        SO_LINGERの設定。
        例外:
        SocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
        導入されたバージョン:
        1.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
        SO_OOBINLINE (TCP緊急データの受信)を有効または無効にします。デフォルトではこのオプションは無効になっており、ソケット上で受信されたTCP緊急データは何の通知もなく破棄されます。 ユーザーが緊急データの受信を望んでいる場合は、このオプションを有効にしてください。 有効にした場合、緊急データは通常データとともにインラインで受信されます。

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

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

        public boolean getOOBInline()
                             throws SocketException
        SO_OOBINLINEが有効かどうかを調べます。
        戻り値:
        SO_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エラーなど)が発生した場合。
        導入されたバージョン:
        1.1
        関連項目:
        getSoTimeout()
      • getSoTimeout

        public int getSoTimeout()
                         throws SocketException
        Returns setting for SO_TIMEOUT.このオプションが無効(タイム・アウトが無限)の場合は0を返します。
        戻り値:
        SO_TIMEOUTの設定
        例外:
        SocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
        導入されたバージョン:
        1.1
        関連項目:
        setSoTimeout(int)
      • setSendBufferSize

        public void setSendBufferSize​(int size)
                               throws SocketException
        このSocketSO_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で出力用としてプラットフォームが使うバッファのサイズです。
        戻り値:
        このSocketSO_SNDBUFオプションの値。
        例外:
        SocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
        導入されたバージョン:
        1.2
        関連項目:
        setSendBufferSize(int)
      • setReceiveBufferSize

        public void setReceiveBufferSize​(int size)
                                  throws SocketException
        このSocketSO_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で入力用としてプラットフォームが使うバッファのサイズです。
        戻り値:
        このSocketSO_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の場合、この値はintegerで構成され、最下位8ビットが、ソケットによって送信されたIPパケットのTOSオクテットの値を表します。 RFC 1349ではTOSの値は次のように定義されています。

        • IPTOS_LOWCOST (0x02)
        • IPTOS_RELIABILITY (0x04)
        • IPTOS_THROUGHPUT (0x08)
        • IPTOS_LOWDELAY (0x10)
        最下位ビットは、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(), SocketOptions.IP_TOS
      • getTrafficClass

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

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

        戻り値:
        すでに設定されているトラフィック・クラスまたはサービス型
        例外:
        SocketException - トラフィック・クラスまたはサービス・タイプの値を取得する際にエラーが発生した場合。
        導入されたバージョン:
        1.4
        関連項目:
        setTrafficClass(int), SocketOptions.IP_TOS
      • 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_REUSEADDRソケット・オプションの有効化または無効化時にエラーが発生した場合、またはソケットがクローズされている場合。
        導入されたバージョン:
        1.4
        関連項目:
        getReuseAddress(), bind(SocketAddress), isClosed(), isBound()
      • close

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

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

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

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

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

        定義:
        close、インタフェース: AutoCloseable
        定義:
        close、インタフェース: Closeable
        例外:
        IOException - このソケットを閉じるときに入出力エラーが発生した場合。
        関連項目:
        isClosed()
      • shutdownInput

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

        ソケットでこのメソッドを呼び出した後にソケットの入力ストリームから読み込むと、ストリームのavailableメソッドは0を返し、readメソッドは-1 (ストリームの終わり)を返します。

        例外:
        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に変換します。
        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        このソケットの文字列表現。
      • isConnected

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

        注: ソケットを閉じても接続状態はクリアされません。つまりこのメソッドは、閉じられる前にソケットが正常に接続されていた場合、閉じられたソケット(isClosed()を参照)にはtrueを返します。

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

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

        注: ソケットを閉じてもバインディング状態はクリアされません。つまりこのメソッドは、閉じられる前にソケットが正常にバインドされていた場合、閉じられたソケット(isClosed()を参照)にはtrueを返します。

        戻り値:
        ソケットが正常にアドレスにバインドされていた場合は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
      • setOption

        public <T> Socket setOption​(SocketOption<T> name,
                                    T value)
                             throws IOException
        ソケット・オプションの値を設定します。
        型パラメータ:
        T - ソケット・オプション値のタイプ
        パラメータ:
        name - ソケット・オプション
        value - ソケット・オプションの値。 nullの値は、一部のオプションで有効です。
        戻り値:
        このソケット
        例外:
        UnsupportedOperationException - ソケットがオプションをサポートしていない場合。
        IllegalArgumentException - 値がオプションに対して有効でない場合。
        IOException - I/Oエラーが発生した場合、またはソケットが閉じられている場合。
        NullPointerException - nameがnullの場合
        SecurityException - セキュリティ・マネージャが設定されていて、ソケット・オプションにセキュリティ許可が必要で、呼び出し元に必要な許可がない場合。 StandardSocketOptionsはセキュリティ権限を必要としません。
        導入されたバージョン:
        9
      • getOption

        public <T> T getOption​(SocketOption<T> name)
                        throws IOException
        ソケット・オプションの値を返します。
        型パラメータ:
        T - ソケット・オプション値のタイプ
        パラメータ:
        name - ソケット・オプション
        戻り値:
        ソケット・オプションの値。
        例外:
        UnsupportedOperationException - ソケットがオプションをサポートしていない場合。
        IOException - I/Oエラーが発生した場合、またはソケットが閉じられている場合。
        NullPointerException - nameがnullの場合
        SecurityException - セキュリティ・マネージャが設定されていて、ソケット・オプションにセキュリティ許可が必要で、呼び出し元に必要な許可がない場合。 StandardSocketOptionsはセキュリティ権限を必要としません。
        導入されたバージョン:
        9
      • supportedOptions

        public Set<SocketOption<?>> supportedOptions()
        このソケットでサポートされているソケット・オプションのセットを返します。 このメソッドは、ソケットが閉じられた後も引き続き一連のオプションを返します。
        戻り値:
        このソケットでサポートされているソケット・オプションのセット。 ソケットSocketImplを作成できない場合、このセットは空の場合があります。
        導入されたバージョン:
        9