クラスSocket
- すべての実装されたインタフェース:
- Closeable,- AutoCloseable
- 直系の既知のサブクラス:
- SSLSocket
 ソケットの実際の処理は、SocketImplクラスのインスタンスによって実行されます。
 
 Socketクラスは、複数のソケット・オプションを設定および取得するための便利なメソッドを定義します。 このクラスは、ソケット・オプションを設定および問合せするsetOptionメソッドとgetOptionメソッドも定義します。 Socketでは、次のオプションをサポートしています: 
 
追加(実装固有)のオプションをサポートできる場合もあります。
オプション名 説明 SO_SNDBUFソケット送信バッファのサイズ SO_RCVBUFソケット受信バッファのサイズ SO_KEEPALIVE接続をキープアライブにします SO_REUSEADDRアドレスを再利用します SO_LINGER閉じるときにデータが存在する場合は遅延します(ブロック・モードに構成されている場合のみ) TCP_NODELAYNagleアルゴリズムを無効にします 
- 導入されたバージョン:
- 1.0
- 関連項目:
- 
コンストラクタのサマリーコンストラクタ修飾子コンストラクタ説明Socket()未接続のソケットを作成します。ストリーム・ソケットを作成し、指定されたホスト上の指定されたポート番号に接続します。削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。Socket(String host, int port, InetAddress localAddr, int localPort) ソケットを作成し、指定されたリモート・ポート上の指定されたリモート・ホストに接続します。Socket(InetAddress address, int port) ストリーム・ソケットを作成し、指定されたIPアドレスの指定されたポート番号に接続します。Socket(InetAddress host, int port, boolean stream) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。UDPトランスポートには、かわりにDatagramSocketを使用します。Socket(InetAddress address, int port, InetAddress localAddr, int localPort) ソケットを作成し、指定されたリモート・ポート上の指定されたリモート・アドレスに接続します。接続されていないソケットを作成します。ほかの設定にかかわらず使用すべきプロキシ・タイプが存在する場合は、そのタイプを指定します。protectedSocket(SocketImpl impl) ユーザーが指定したSocketImplを使用して、接続されていないソケットを作成します。
- 
メソッドのサマリー修飾子と型メソッド説明voidbind(SocketAddress bindpoint) ソケットをローカル・アドレスにバインドします。voidclose()このソケットを閉じます。voidconnect(SocketAddress endpoint) このソケットをサーバーに接続します。voidconnect(SocketAddress endpoint, int timeout) 指定されたタイム・アウト値を使って、このソケットをサーバーに接続します。このソケットに関連付けられた一意のSocketChannelオブジェクトを返します(存在する場合)。ソケットの接続先のアドレスを返します。このソケットの入力ストリームを返します。booleanSO_KEEPALIVEが有効かどうかを調べます。ソケットのバインド先のローカル・アドレスを取得します。intこのソケットのバインド先のローカル・ポート番号を返します。このソケットのバインド先の端点のアドレスを返します。booleanSO_OOBINLINEが有効かどうかを調べます。<T> TgetOption(SocketOption<T> name) ソケット・オプションの値を返します。このソケットの出力ストリームを返します。intgetPort()このソケットの接続先のリモート・ポート番号を返します。intこのSocketで使われるSO_RCVBUFオプションの値を取得します。これは、このSocketで入力用としてプラットフォームが使うバッファのサイズです。このソケットが接続されている端点のアドレスを返します。ソケットが接続されていない場合はnullを返します。booleanSO_REUSEADDRが有効かどうかを調べます。intこのSocketで使われるSO_SNDBUFオプションの値を取得します。これは、このSocketで出力用としてプラットフォームが使うバッファのサイズです。intSO_LINGERの設定を返します。intReturns setting forSO_TIMEOUT.このオプションが無効(タイム・アウトが無限)の場合は0を返します。booleanTCP_NODELAYが有効かどうかを調べます。intこのソケットから送信されるパケットのIPヘッダーのトラフィック・クラスまたはサービス・タイプを取得します。booleanisBound()ソケットのバインディング状態を返します。booleanisClosed()ソケットの閉じた状態を返します。booleanソケットの接続状態を返します。booleanソケット接続の読込み側の半分が閉じているかどうかを返します。booleanソケット接続の書込み側の半分が閉じているかどうかを返します。voidsendUrgentData(int data) このソケット上で1バイトの緊急データを送信します。voidsetKeepAlive(boolean on) SO_KEEPALIVEを有効または無効にします。voidsetOOBInline(boolean on) SO_OOBINLINE(TCP緊急データの受信)を有効または無効にします。デフォルトではこのオプションは無効になっており、ソケット上で受信されたTCP緊急データは何の通知もなく破棄されます。<T> SocketsetOption(SocketOption<T> name, T value) ソケット・オプションの値を設定します。voidsetPerformancePreferences(int connectionTime, int latency, int bandwidth) このソケットのパフォーマンス設定を行います。voidsetReceiveBufferSize(int size) このSocketのSO_RCVBUFオプションを指定された値に設定します。voidsetReuseAddress(boolean on) SO_REUSEADDRソケット・オプションを有効または無効にします。voidsetSendBufferSize(int size) このSocketのSO_SNDBUFオプションを指定された値に設定します。static void非推奨。SocketFactoryおよびサブクラスSocketを直接使用します。voidsetSoLinger(boolean on, int linger) 指定された遅延時間(秒)を使ってSO_LINGERを有効または無効にします。voidsetSoTimeout(int timeout) 指定されたタイムアウト(ミリ秒)を使ってSO_TIMEOUTを有効または無効にします。voidsetTcpNoDelay(boolean on) TCP_NODELAYを有効または無効にします(Nagleのアルゴリズムの有効、無効の切り替え)。voidsetTrafficClass(int tc) このソケットから送信されるパケットのIPヘッダーのトラフィック・クラスまたはサービス・タイプのオクテットを設定します。voidこのソケットの入力ストリームを「ストリームの終わり」に設定します。voidこのソケットの出力ストリームを無効にします。Set<SocketOption<?>> このソケットでサポートされているソケット・オプションのセットを返します。toString()このソケットをStringに変換します。
- 
コンストラクタの詳細- 
Socketpublic Socket()未接続のソケットを作成します。アプリケーションが「クライアント・ソケット実装ファクトリ」を指定した場合、そのファクトリのcreateSocketImplメソッドがコールされ、実際のソケット実装が作成されます。 そうでない場合は、システムにデフォルトのソケット実装が作成されます。 - 導入されたバージョン:
- 1.1
 
- 
Socketpublic 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
- 関連項目:
 
- 
Socketprotected Socket(SocketImpl impl) throws SocketException ユーザーが指定したSocketImplを使用して、接続されていないソケットを作成します。- パラメータ:
- impl- サブクラスがSocket上で使用するSocketImplのインスタンス。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- SecurityException-- implがnull以外で、セキュリティ・マネージャが設定されていて、その- checkPermissionメソッドが- NetPermission("setSocketImpl")を許可していない場合。
- 導入されたバージョン:
- 1.1
 
- 
Socketpublic 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)外である場合。
- 関連項目:
 
- 
Socketpublic 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である場合。
- 関連項目:
 
- 
Socketpublic 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
- 関連項目:
 
- 
Socketpublic 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
- 関連項目:
 
- 
Socket@Deprecated(forRemoval=true, since="1.1") public Socket(String host, int port, boolean stream) throws IOException 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。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)外である場合。
- 関連項目:
 
- 
Socket@Deprecated(forRemoval=true, since="1.1") public Socket(InetAddress host, int port, boolean stream) throws IOException 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。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である場合。
- 関連項目:
 
 
- 
- 
メソッドの詳細- 
connectpublic void connect(SocketAddress endpoint) throws IOException このソケットをサーバーに接続します。このメソッドは、次の状況では「割り込み」です: -  ソケットはSocketChannelを持つ「関連」です。 その場合、接続を確立するスレッドを中断すると、基礎となるチャネルが閉じられ、このメソッドは中断ステータスが設定されたClosedByInterruptExceptionをスローします。
-  ソケットはシステム・デフォルトのソケット実装を使用し、「仮想スレッド」は接続を確立しています。 その場合、仮想スレッドを中断すると、仮想スレッドが復帰してソケットを閉じます。 このメソッドは、中断ステータスが設定されたSocketExceptionをスローします。
 - パラメータ:
- endpoint-- SocketAddress
- 例外:
- IOException- 接続時にエラーが発生した場合
- IllegalBlockingModeException- このソケットに関連するチャネルが存在し、そのチャネルが非ブロック・モードである場合。
- IllegalArgumentException- 端点がnullであるか、このソケットによってサポートされていないSocketAddressサブクラスである場合
- 導入されたバージョン:
- 1.4
 
-  ソケットは
- 
connectpublic void connect(SocketAddress endpoint, int timeout) throws IOException 指定されたタイム・アウト値を使って、このソケットをサーバーに接続します。 タイム・アウト0は無限のタイム・アウトとして解釈されます。 その後、接続が確立されるかエラーが発生するまで、接続がブロックされます。このメソッドは、次の状況では「割り込み」です: -  ソケットはSocketChannelを持つ「関連」です。 その場合、接続を確立するスレッドを中断すると、基礎となるチャネルが閉じられ、このメソッドは中断ステータスが設定されたClosedByInterruptExceptionをスローします。
-  ソケットはシステム・デフォルトのソケット実装を使用し、「仮想スレッド」は接続を確立しています。 その場合、仮想スレッドを中断すると、仮想スレッドが復帰してソケットを閉じます。 このメソッドは、中断ステータスが設定されたSocketExceptionをスローします。
 - パラメータ:
- endpoint-- SocketAddress
- timeout−使用するタイム・アウト値(ミリ秒)。
- 例外:
- IOException- 接続時にエラーが発生した場合
- SocketTimeoutException−接続する前にタイム・アウトが過ぎた場合
- IllegalBlockingModeException- このソケットに関連するチャネルが存在し、そのチャネルが非ブロック・モードである場合。
- IllegalArgumentException- エンドポイントがnullまたはこのソケットでサポートされないSocketAddressサブクラスである場合、または- timeoutが負の場合
- 導入されたバージョン:
- 1.4
 
-  ソケットは
- 
bindpublic void bind(SocketAddress bindpoint) throws IOException ソケットをローカル・アドレスにバインドします。アドレスが nullの場合は、システムにより一時的なポートと有効なローカル・アドレスが選択されてソケットがバインドされます。- パラメータ:
- bindpoint- バインド先の- SocketAddress
- 例外:
- IOException- バインド操作に失敗した場合、あるいはソケットがすでにバインドされている場合。
- IllegalArgumentException- bindpointが、このソケットによってサポートされていないSocketAddressサブクラスである場合
- SecurityException- セキュリティ・マネージャが存在し、その- checkListenメソッドがローカル・ポートへのバインドを許可しない場合。
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
getInetAddresspublic InetAddress getInetAddress()ソケットの接続先のアドレスを返します。ソケットが 閉じられる前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先アドレスを返します。- 戻り値:
- このソケットの接続先のリモートIPアドレス。ソケットが接続されていない場合はnull。
 
- 
getLocalAddresspublic InetAddress getLocalAddress()ソケットのバインド先のローカル・アドレスを取得します。セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャの checkConnectメソッドがローカル・アドレスおよび-1を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック・アドレスが返されます。- 戻り値:
- ソケットのバインド先のローカル・アドレス。セキュリティ・マネージャによって拒否された場合はループバック・アドレス。ソケットが閉じられているか、まだバインドされていない場合はワイルドカード・アドレス。
- 導入されたバージョン:
- 1.1
- 関連項目:
 
- 
getPortpublic int getPort()このソケットの接続先のリモート・ポート番号を返します。ソケットが 閉じられる前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先ポート番号を返します。- 戻り値:
- このソケットの接続先のリモート・ポート番号。ソケットがまだ接続されていない場合は0。
 
- 
getLocalPortpublic int getLocalPort()このソケットのバインド先のローカル・ポート番号を返します。ソケットが 閉じられる前に接続されていた場合、このメソッドはソケットが閉じられたあとも引き続きローカル・ポート番号を返します。- 戻り値:
- このソケットのバインド先のローカル・ポート番号。ソケットがまだバインドされていない場合は -1。
 
- 
getRemoteSocketAddresspublic SocketAddress getRemoteSocketAddress()このソケットが接続されている端点のアドレスを返します。ソケットが接続されていない場合はnullを返します。ソケットが 閉じられる前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先アドレスを返します。- 戻り値:
- このソケットのリモート端点を表すSocketAddress。ソケットがまだ接続されていない場合はnull。
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
getLocalSocketAddresspublic SocketAddress getLocalSocketAddress()このソケットのバインド先の端点のアドレスを返します。InetSocketAddressが表す端点にバインドされているソケットが閉じられている場合、このメソッドはソケットが閉じられたあともInetSocketAddressを返します。 その場合、返されたInetSocketAddressのアドレスはワイルドカード・アドレスで、そのポートはバインド先のローカル・ポートです。セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャの checkConnectメソッドがローカル・アドレスおよび-1を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック・アドレスを表すSocketAddressと、このソケットのバインド先であるローカル・ポートが返されます。- 戻り値:
- このソケットのローカル端点を表すSocketAddress。セキュリティ・マネージャによって拒否された場合はループバック・アドレスを表すSocketAddress。ソケットがまだバインドされていない場合はnull。
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
getChannelpublic SocketChannel getChannel()このソケットに関連付けられた一意のSocketChannelオブジェクトを返します(存在する場合)。チャネル自体が SocketChannel.openメソッドまたはServerSocketChannel.acceptメソッドを使用して作成された場合にだけ、ソケットにチャネルが存在します。- 戻り値:
- このソケットに関連付けられたソケット・チャネル。このソケットがチャネル用に作成されたものでない場合はnull
- 導入されたバージョン:
- 1.4
 
- 
getInputStreampublic InputStream getInputStream() throws IOExceptionこのソケットの入力ストリームを返します。このソケットにチャネルが関連付けられている場合、結果として得られる入力ストリームは、その操作のすべてをチャネルに委譲します。 そのチャネルが非ブロック・モードである場合、入力ストリームの read操作がIllegalBlockingModeExceptionをスローします。次の状況では、入力ストリームからの読取りは「割り込み」です: -  ソケットはSocketChannelを持つ「関連」です。 その場合、入力ストリームからのスレッド読取りを中断すると、基礎となるチャネルがクローズされ、読取りメソッドにより、中断ステータスが設定されたClosedByInterruptExceptionがスローされます。
-  ソケットはシステム・デフォルトのソケット実装を使用し、「仮想スレッド」は入力ストリームから読取り中です。 その場合、仮想スレッドを中断すると、仮想スレッドが復帰してソケットを閉じます。 読取りメソッドは、中断ステータスが設定されたSocketExceptionをスローします。
 異常な状況下では、リモート・ホストやネットワーク・ソフトウェアによって使用している接続が解除される可能性があります(TCP接続の場合であれば接続がリセットされるなど)。 接続の解除がネットワーク・ソフトウェアによって検出された場合、返された入力ストリームに対して次のことが当てはまります。 - ネットワーク・ソフトウェアがソケットによってバッファリングされたバイトを破棄する可能性がある。 ネットワーク・ソフトウェアによって破棄されていないバイトは、 - readを使って読み取ることができる。
- ソケットでバッファリングされたバイトがない場合、またはバッファリングされたすべてのバイトが - readによって消費された場合、以降の- readへの呼出しはすべて、- IOExceptionをスローします。
- ソケットでバッファリングされたバイトがなく、ソケットが - closeを使用して閉じられていない場合、- availableは- 0を返します。
 返された InputStreamをクローズすると、関連付けられたソケットがクローズします。- 戻り値:
- このソケットからバイトを読み込むための入力ストリーム。
- 例外:
- IOException−入力ストリームの作成時に入出力エラーが発生した場合、ソケットがクローズされている場合、ソケットが接続されていない場合、または- shutdownInput()を使ってソケットの入力がシャットダウンされた場合
 
-  ソケットは
- 
getOutputStreampublic OutputStream getOutputStream() throws IOExceptionこのソケットの出力ストリームを返します。このソケットにチャネルが関連付けられている場合、結果として得られる出力ストリームは、その操作のすべてをチャネルに委譲します。 そのチャネルが非ブロック・モードである場合、出力ストリームの write操作がIllegalBlockingModeExceptionをスローします。次の状況では、出力ストリームへの書込みは「割り込み」です: -  ソケットはSocketChannelを持つ「関連」です。 その場合、出力ストリームへのスレッド書込みを中断すると、基礎となるチャネルがクローズされ、書込みメソッドにより、中断ステータスが設定されたClosedByInterruptExceptionがスローされます。
-  ソケットはシステム・デフォルトのソケット実装を使用し、「仮想スレッド」は出力ストリームに書き込みます。 その場合、仮想スレッドを中断すると、仮想スレッドが復帰してソケットを閉じます。 書込みメソッドは、中断ステータスが設定されたSocketExceptionをスローします。
 返された OutputStreamをクローズすると、関連付けられたソケットがクローズします。- 戻り値:
- このソケットにバイトを書き込むための出力ストリーム。
- 例外:
- IOException−出力ストリームの作成中に入出力エラーが発生した場合、またはソケットが接続されていない場合。
 
-  ソケットは
- 
setTcpNoDelaypublic void setTcpNoDelay(boolean on) throws SocketException TCP_NODELAYを有効または無効にします(Nagleのアルゴリズムの有効、無効の切り替え)。- パラメータ:
- on-- true:- TCP_NODELAY、- falseを無効化します。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.1
- 関連項目:
 
- 
getTcpNoDelaypublic boolean getTcpNoDelay() throws SocketExceptionTCP_NODELAYが有効かどうかを調べます。- 戻り値:
- TCP_NODELAYが有効かどうかを示す- boolean。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.1
- 関連項目:
 
- 
setSoLingerpublic void setSoLinger(boolean on, int linger) throws SocketException - パラメータ:
- on−遅延時間を有効にするかどうかを指定。
- linger−onがtrueの場合は、遅延時間。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- IllegalArgumentException−遅延時間の値が負の数値である場合。
- 導入されたバージョン:
- 1.1
- 関連項目:
 
- 
getSoLingerpublic int getSoLinger() throws SocketExceptionReturns setting forSO_LINGER.戻り値 -1は、このオプションが無効になっていることを意味します。 設定はソケットを閉じる場合にだけ影響します。- 戻り値:
- SO_LINGERの設定。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.1
- 関連項目:
 
- 
sendUrgentDatapublic void sendUrgentData(int data) throws IOException このソケット上で1バイトの緊急データを送信します。 送信されるバイトは、データ・パラメータの最下位の8ビットです。 この緊急バイトは、ソケットのOutputStreamへの先行するすべての書込みの後、OutputStreamへの後続のすべての書込みの前に送信されます。- パラメータ:
- data- 送信するデータのバイト
- 例外:
- IOException- データ送信時にエラーが発生した場合。
- 導入されたバージョン:
- 1.4
 
- 
setOOBInlinepublic void setOOBInline(boolean on) throws SocketException SO_OOBINLINE(TCP緊急データの受信)を有効または無効にします。デフォルトではこのオプションは無効になっており、ソケット上で受信されたTCP緊急データは何の通知もなく破棄されます。 ユーザーが緊急データの受信を望んでいる場合は、このオプションを有効にしてください。 有効にした場合、緊急データは通常データとともにインラインで受信されます。受信緊急データの処理に関しては、限られたサポートしか提供されていないことに注意してください。 特に、高位レベルのプロトコルが提供されていない場合、受信する緊急データの通知は提供されず、通常データと緊急データを区別する機能はありません。 - パラメータ:
- on-- true:- SO_OOBINLINE、- falseを無効化します。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
getOOBInlinepublic boolean getOOBInline() throws SocketExceptionSO_OOBINLINEが有効かどうかを調べます。- 戻り値:
- SO_OOBINLINEが有効かどうかを示す- boolean。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
setSoTimeoutpublic void setSoTimeout(int timeout) throws SocketException 指定されたタイムアウト(ミリ秒)を使ってSO_TIMEOUTを有効または無効にします。 このオプションを正のタイムアウト値に設定すると、このソケットに関連付けられているInputStreamに対するread()コールは、この時間のみブロックされます。 タイム・アウトの期限が切れると、Socketがまだ有効であってもjava.net.SocketTimeoutExceptionが発行されます。 タイム・アウト0は無限のタイム・アウトとして解釈されます。 このオプションは、ブロック処理に入る前に有効にしておく必要があります。- パラメータ:
- timeout- ミリ秒で表される、指定されたタイム・アウト。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合
- IllegalArgumentException-- timeoutが負の値の場合
- 導入されたバージョン:
- 1.1
- 関連項目:
 
- 
getSoTimeoutpublic int getSoTimeout() throws SocketExceptionReturns setting forSO_TIMEOUT.このオプションが無効(タイム・アウトが無限)の場合は0を返します。- 戻り値:
- SO_TIMEOUTの設定
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.1
- 関連項目:
 
- 
setSendBufferSizepublic void setSendBufferSize(int size) throws SocketException このSocketのSO_SNDBUFオプションを指定された値に設定します。SO_SNDBUFオプションは、基盤となるネットワークI/Oバッファを設定するためのサイズのヒントとして、プラットフォームのネットワーク・コードで使用されます。SO_SNDBUFはヒントであるため、バッファがgetSendBufferSize()をコールするように設定されているサイズを検証するアプリケーションです。- パラメータ:
- size- 送信バッファ・サイズの設定サイズ。 この値は0より大きくなければならない。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- IllegalArgumentException- 値が0または負の値である場合。
- 導入されたバージョン:
- 1.2
- 関連項目:
 
- 
getSendBufferSizepublic int getSendBufferSize() throws SocketExceptionこのSocketで使われるSO_SNDBUFオプションの値を取得します。これは、このSocketで出力用としてプラットフォームが使うバッファのサイズです。- 戻り値:
- このSocketのSO_SNDBUFオプションの値。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.2
- 関連項目:
 
- 
setReceiveBufferSizepublic void setReceiveBufferSize(int size) throws SocketException このSocketのSO_RCVBUFオプションを指定された値に設定します。SO_RCVBUFオプションは、基盤となるネットワークI/Oバッファを設定するためのサイズのヒントとして、プラットフォームのネットワーク・コードで使用されます。受信バッファのサイズを増やすと、大規模な接続でのネットワーク入出力のパフォーマンスを上げることができます。一方、サイズを減らすと、受信データのバックログを減らすことができます。 SO_RCVBUFはヒントであるため、バッファがgetReceiveBufferSize()をコールするように設定されているサイズを検証するアプリケーションです。SO_RCVBUFの値は、リモート・ピアに通知されるTCP受信ウィンドウの設定にも使用されます。 一般に、ソケットが接続されているかぎり、このウィンドウ・サイズはいつでも変更できます。 ただし、64Kを超える受信ウィンドウを要求する場合は、ソケットをリモート・ピアに接続する前に変更を要求する必要があります。 次の2つの場合に注意してください。- ServerSocketから受け入れたソケットの場合、ServerSocketをローカル・アドレスにバインドする前に、ServerSocket.setReceiveBufferSize(int)を呼び出してこれを実行する必要があります。
- クライアント・ソケットの場合、ソケットをそのリモート・ピアに接続する前に、setReceiveBufferSize()を呼び出す必要があります。
 - パラメータ:
- size- 受信バッファ・サイズの設定サイズ。 この値は0より大きくなければならない。
- 例外:
- IllegalArgumentException- 値が0または負の値である場合。
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.2
- 関連項目:
 
- ServerSocketから受け入れたソケットの場合、ServerSocketをローカル・アドレスにバインドする前に、
- 
getReceiveBufferSizepublic int getReceiveBufferSize() throws SocketExceptionこのSocketで使われるSO_RCVBUFオプションの値を取得します。これは、このSocketで入力用としてプラットフォームが使うバッファのサイズです。- 戻り値:
- このSocketのSO_RCVBUFオプションの値。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.2
- 関連項目:
 
- 
setKeepAlivepublic void setKeepAlive(boolean on) throws SocketException SO_KEEPALIVEを有効または無効にします。- パラメータ:
- on−ソケットをオンのままにしておくかどうかを指定。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.3
- 関連項目:
 
- 
getKeepAlivepublic boolean getKeepAlive() throws SocketExceptionSO_KEEPALIVEが有効かどうかを調べます。- 戻り値:
- SO_KEEPALIVEが有効かどうかを示す- boolean。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.3
- 関連項目:
 
- 
setTrafficClasspublic 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)
 優先フィールドにビットを設定すると、操作が許可されないことを示すSocketExceptionになることがあります。 RFC 1122のセクション4.2.4.2に示されているように、準拠したTCP実装は、接続の寿命がある間はアプリケーションがTOSフィールドを変更できるようにすべきです(ただし、必ずしもそうする必要はない)。 したがって、TCP接続の確立後にサービス・タイプ・フィールドを変更できるかどうかは、使用するプラットフォーム内の実装によって決まります。 アプリケーションは、接続後にTOSフィールドを変更できると仮定すべきではありません。 IP (Internet Protocol)バージョン6の場合、 tcはIPヘッダーのsin6_flowinfoフィールドに格納される値です。- パラメータ:
- tc- ビット・セットの- int値。
- 例外:
- SocketException- トラフィック・クラスまたはサービス・タイプの設定時にエラーが発生した場合
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
getTrafficClasspublic int getTrafficClass() throws SocketExceptionこのソケットから送信されるパケットのIPヘッダーのトラフィック・クラスまたはサービス・タイプを取得します。使用するネットワーク実装が、 setTrafficClass(int)を使用して設定されたトラフィック・クラスまたはサービス型を無視することがあるので、このSocketでsetTrafficClass(int)メソッドを使用して以前に設定された値とは異なる値がこのメソッドから返されることがあります。- 戻り値:
- すでに設定されているトラフィック・クラスまたはサービス型
- 例外:
- SocketException- トラフィック・クラスまたはサービス・タイプの値を取得する際にエラーが発生した場合。
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
setReuseAddresspublic 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
- 関連項目:
 
- 
getReuseAddresspublic boolean getReuseAddress() throws SocketExceptionSO_REUSEADDRが有効かどうかを調べます。- 戻り値:
- SO_REUSEADDRが有効かどうかを示す- boolean。
- 例外:
- SocketException- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
closepublic void close() throws IOExceptionこのソケットを閉じます。このソケットの入出力操作で現在ブロックされているすべてのスレッドが SocketExceptionをスローします。ソケットが閉じられると、その後のネットワークにそのソケットを使用することはできません(つまり、再接続または再バインドはできない)。 新しいソケットを作成する必要があります。 このソケットをクローズすると、このソケットの InputStreamとOutputStreamもクローズされます。このソケットに関連するチャネルが存在する場合は、そのチャネルも閉じられます。 - 定義:
- close、インタフェース- AutoCloseable
- 定義:
- close、インタフェース- Closeable
- 例外:
- IOException- このソケットを閉じるときに入出力エラーが発生した場合。
- 関連項目:
 
- 
shutdownInputpublic void shutdownInput() throws IOExceptionこのソケットの入力ストリームを「ストリームの終わり」に設定します。 ソケットの入力ストリーム側に送信されたデータはすべて、確認されたあと何の通知もなく破棄されます。ソケットでこのメソッドを呼び出した後にソケットの入力ストリームから読み込むと、ストリームの availableメソッドは0を返し、readメソッドは-1(ストリームの終わり)を返します。- 例外:
- IOException- このソケットを停止するときに入出力エラーが発生した場合。
- 導入されたバージョン:
- 1.3
- 関連項目:
 
- 
shutdownOutputpublic void shutdownOutput() throws IOExceptionこのソケットの出力ストリームを無効にします。 TCPソケットの場合、それまでに書き込まれたデータのすべてが、TCPの通常の接続終了シーケンスに従って送信されます。 ソケットでshutdownOutput()を呼び出したあとにソケットの出力ストリームに書き込むと、ストリームはIOExceptionをスローします。- 例外:
- IOException- このソケットを停止するときに入出力エラーが発生した場合。
- 導入されたバージョン:
- 1.3
- 関連項目:
 
- 
toString
- 
isConnectedpublic boolean isConnected()ソケットの接続状態を返します。ノート: ソケットを閉じても、接続状態はクリアされません。つまり、閉じられたソケット( isClosed()を参照してください)に対しては、閉じられたソケットが閉じられる前に正常に接続されていた場合にtrueが返されます。- 戻り値:
- ソケットがサーバーに正常に接続された場合はtrue
- 導入されたバージョン:
- 1.4
 
- 
isBoundpublic boolean isBound()ソケットのバインディング状態を返します。ノート: ソケットを閉じても、バインディング状態はクリアされません。つまり、閉じられたソケット( isClosed()を参照してください)についてtrueが正常に閉じられる前にバインドされていた場合、このメソッドはそのソケットを返します。- 戻り値:
- ソケットがアドレスに正常にバインドされた場合はtrue
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
isClosedpublic boolean isClosed()ソケットの閉じた状態を返します。- 戻り値:
- ソケットが閉じた場合はtrue
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
isInputShutdownpublic boolean isInputShutdown()ソケット接続の読込み側の半分が閉じているかどうかを返します。- 戻り値:
- ソケットの入力が停止した場合はtrue
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
isOutputShutdownpublic boolean isOutputShutdown()ソケット接続の書込み側の半分が閉じているかどうかを返します。- 戻り値:
- ソケットの出力が停止した場合はtrue
- 導入されたバージョン:
- 1.4
- 関連項目:
 
- 
setSocketImplFactory@Deprecated(since="17") public static void setSocketImplFactory(SocketImplFactory fac) throws IOException 非推奨。SocketFactoryおよびサブクラスSocketを直接使用します。
 このメソッドは、システム全体のSocket実装を置き換えるためのJDKの初期リリースの方法を提供します。 Java 1.4以降、ほとんど廃止されています。 必要に応じて、Socketを拡張し、implementationをパラメータとして取るprotected constructorを使用して、カスタム実装を使用するようにSocketを作成できます。アプリケーションのクライアント・ソケット実装ファクトリを設定します。 ファクトリを指定できるのは一度だけです。アプリケーションで新しいクライアント・ソケットを作成すると、ソケット実装ファクトリの createSocketImplメソッドが呼び出され、実際のソケットが作成されます。このメソッドに nullを渡しても、ファクトリがすでに設定されていないかぎり、それは無操作になります。セキュリティ・マネージャが存在する場合、この操作が許可されるように、このメソッドは最初にセキュリティ・マネージャの checkSetFactoryメソッドを呼び出します。 この結果、SecurityExceptionがスローされることがあります。- パラメータ:
- fac- 目的のファクトリ。
- 例外:
- IOException- ソケット・ファクトリの設定中に入出力エラーが発生した場合。
- SocketException- ファクトリがすでに定義されている場合。
- SecurityException- セキュリティ・マネージャが存在し、その- checkSetFactoryメソッドでこの操作が許可されていない場合。
- 関連項目:
 
- 
setPerformancePreferencespublic 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
 
- 
setOptionpublic <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
 
- 
getOptionpublic <T> T getOption(SocketOption<T> name) throws IOException ソケット・オプションの値を返します。- 型パラメータ:
- T- ソケット・オプション値のタイプ
- パラメータ:
- name- ソケット・オプション
- 戻り値:
- ソケット・オプションの値。
- 例外:
- UnsupportedOperationException- ソケットがオプションをサポートしていない場合。
- IOException- I/Oエラーが発生した場合、またはソケットが閉じている場合。
- NullPointerException- nameが- nullの場合
- SecurityException- セキュリティ・マネージャが設定されていて、ソケット・オプションにセキュリティ権限が必要で、コール元に必要な権限がない場合。- StandardSocketOptionsには、セキュリティ権限は必要ありません。
- 導入されたバージョン:
- 9
 
- 
supportedOptionspublic Set<SocketOption<?>> supportedOptions()このソケットでサポートされているソケット・オプションのセットを返します。 このメソッドは、ソケットが閉じられた後でも、一連のオプションを引き続き返します。- 戻り値:
- このソケットでサポートされているソケット・オプションのセット。 ソケットのSocketImplを作成できない場合、このセットは空になることがあります。
- 導入されたバージョン:
- 9
 
 
- 
DatagramSocketを使用します。