- すべての実装されたインタフェース:
Closeable
,AutoCloseable
- 直系の既知のサブクラス:
SSLSocket
ソケットの実際の処理は、SocketImpl
クラスのインスタンスによって実行されます。
Socket
クラスは、複数のソケット・オプションを設定および取得するための便利なメソッドを定義します。 このクラスは、ソケット・オプションを設定および問合せするsetOption
メソッドとgetOption
メソッドも定義します。 Socket
では、次のオプションをサポートしています:
追加(実装固有)のオプションをサポートできる場合もあります。
オプション名 説明 SO_SNDBUF
ソケット送信バッファのサイズ SO_RCVBUF
ソケット受信バッファのサイズ SO_KEEPALIVE
接続をキープアライブにします SO_REUSEADDR
アドレスを再利用します SO_LINGER
閉じるときにデータが存在する場合は遅延します(ブロック・モードに構成されている場合のみ) TCP_NODELAY
Nagleアルゴリズムを無効にします
- 導入されたバージョン:
- 1.0
- 関連項目:
-
コンストラクタのサマリー
修飾子コンストラクタ説明Socket()
未接続のソケットを作成します。ストリーム・ソケットを作成し、指定されたホスト上の指定されたポート番号に接続します。非推奨。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) ソケットを作成し、指定されたリモート・ポート上の指定されたリモート・アドレスに接続します。接続されていないソケットを作成します。ほかの設定にかかわらず使用すべきプロキシ・タイプが存在する場合は、そのタイプを指定します。protected
Socket
(SocketImpl impl) ユーザーが指定したSocketImplを使用して、接続されていないソケットを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明void
bind
(SocketAddress bindpoint) ソケットをローカル・アドレスにバインドします。void
close()
このソケットを閉じます。void
connect
(SocketAddress endpoint) このソケットをサーバーに接続します。void
connect
(SocketAddress endpoint, int timeout) 指定されたタイム・アウト値を使って、このソケットをサーバーに接続します。このソケットに関連付けられた一意のSocketChannel
オブジェクトを返します(存在する場合)。ソケットの接続先のアドレスを返します。このソケットの入力ストリームを返します。boolean
SO_KEEPALIVE
が有効かどうかを調べます。ソケットのバインド先のローカル・アドレスを取得します。int
このソケットのバインド先のローカル・ポート番号を返します。このソケットのバインド先の端点のアドレスを返します。boolean
SO_OOBINLINE
が有効かどうかを調べます。<T> T
getOption
(SocketOption<T> name) ソケット・オプションの値を返します。このソケットの出力ストリームを返します。int
getPort()
このソケットの接続先のリモート・ポート番号を返します。int
このSocket
で使われるSO_RCVBUF
オプションの値を取得します。これは、このSocket
で入力用としてプラットフォームが使うバッファのサイズです。このソケットが接続されている端点のアドレスを返します。ソケットが接続されていない場合はnull
を返します。boolean
SO_REUSEADDR
が有効かどうかを調べます。int
このSocket
で使われるSO_SNDBUF
オプションの値を取得します。これは、このSocket
で出力用としてプラットフォームが使うバッファのサイズです。int
SO_LINGER
の設定を返します。int
Returns setting forSO_TIMEOUT
.このオプションが無効(タイム・アウトが無限)の場合は0を返します。boolean
TCP_NODELAY
が有効かどうかを調べます。int
このソケットから送信されるパケットのIPヘッダーのトラフィック・クラスまたはサービス・タイプを取得します。boolean
isBound()
ソケットのバインディング状態を返します。boolean
isClosed()
ソケットの閉じた状態を返します。boolean
ソケットの接続状態を返します。boolean
ソケット接続の読込み側の半分が閉じているかどうかを返します。boolean
ソケット接続の書込み側の半分が閉じているかどうかを返します。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) このSocket
のSO_RCVBUF
オプションを指定された値に設定します。void
setReuseAddress
(boolean on) SO_REUSEADDR
ソケット・オプションを有効または無効にします。void
setSendBufferSize
(int size) このSocket
のSO_SNDBUF
オプションを指定された値に設定します。static void
非推奨。SocketFactory
およびサブクラスSocket
を直接使用します。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
このソケットの入力ストリームを「ストリームの終わり」に設定します。void
このソケットの出力ストリームを無効にします。Set<SocketOption<?>>
このソケットでサポートされているソケット・オプションのセットを返します。toString()
このソケットをString
に変換します。
-
コンストラクタの詳細
-
Socket
public Socket()未接続のソケットを作成します。アプリケーションがクライアント・ソケット実装ファクトリを指定している場合、実際のソケット実装を作成するためにそのファクトリ
createSocketImpl
メソッドが呼び出されます。 そうでない場合は、システムにデフォルトのソケット実装が作成されます。- 導入されたバージョン:
- 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
- 関連項目:
-
Socket
protected Socket(SocketImpl impl) throws SocketException ユーザーが指定したSocketImplを使用して、接続されていないソケットを作成します。- パラメータ:
impl
- サブクラスがSocket上で使用するSocketImplのインスタンス。- 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。SecurityException
-impl
がnull以外で、セキュリティ・マネージャが設定されていて、そのcheckPermission
メソッドがNetPermission("setSocketImpl")
を許可していない場合。- 導入されたバージョン:
- 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)外である場合。- 関連項目:
-
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である場合。- 関連項目:
-
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
- 関連項目:
-
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
- 関連項目:
-
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)外である場合。- 関連項目:
-
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である場合。- 関連項目:
-
-
メソッドの詳細
-
connect
public void connect(SocketAddress endpoint) throws IOException このソケットをサーバーに接続します。このメソッドは、次の状況では「割り込み」です:
- ソケットは
SocketChannel
を持つ「関連」です。 その場合、接続を確立するスレッドを中断すると、基礎となるチャネルが閉じられ、このメソッドは中断ステータスが設定されたClosedByInterruptException
をスローします。 - ソケットはシステムのデフォルトのソケット実装を使用し、「仮想スレッド」PREVIEWは接続を確立しています。 その場合、仮想スレッドを中断すると、仮想スレッドが復帰してソケットを閉じます。 このメソッドは、中断ステータスが設定された
SocketException
をスローします。
- パラメータ:
endpoint
-SocketAddress
- 例外:
IOException
- 接続時にエラーが発生した場合IllegalBlockingModeException
- このソケットに関連するチャネルが存在し、そのチャネルが非ブロック・モードである場合。IllegalArgumentException
- 端点がnullであるか、このソケットによってサポートされていないSocketAddressサブクラスである場合- 導入されたバージョン:
- 1.4
- ソケットは
-
connect
public void connect(SocketAddress endpoint, int timeout) throws IOException 指定されたタイム・アウト値を使って、このソケットをサーバーに接続します。 タイム・アウト0は無限のタイム・アウトとして解釈されます。 その後、接続が確立されるかエラーが発生するまで、接続がブロックされます。このメソッドは、次の状況では「割り込み」です:
- ソケットは
SocketChannel
を持つ「関連」です。 その場合、接続を確立するスレッドを中断すると、基礎となるチャネルが閉じられ、このメソッドは中断ステータスが設定されたClosedByInterruptException
をスローします。 - ソケットはシステムのデフォルトのソケット実装を使用し、「仮想スレッド」PREVIEWは接続を確立しています。 その場合、仮想スレッドを中断すると、仮想スレッドが復帰してソケットを閉じます。 このメソッドは、中断ステータスが設定された
SocketException
をスローします。
- パラメータ:
endpoint
-SocketAddress
timeout
−使用するタイム・アウト値(ミリ秒)。- 例外:
IOException
- 接続時にエラーが発生した場合SocketTimeoutException
−接続する前にタイム・アウトが過ぎた場合IllegalBlockingModeException
- このソケットに関連するチャネルが存在し、そのチャネルが非ブロック・モードである場合。IllegalArgumentException
- エンドポイントがnullまたはこのソケットでサポートされないSocketAddressサブクラスである場合、またはtimeout
が負の場合- 導入されたバージョン:
- 1.4
- ソケットは
-
bind
public void bind(SocketAddress bindpoint) throws IOException ソケットをローカル・アドレスにバインドします。アドレスが
null
の場合は、システムにより一時的なポートと有効なローカル・アドレスが選択されてソケットがバインドされます。- パラメータ:
bindpoint
- バインド先のSocketAddress
- 例外:
IOException
- バインド操作に失敗した場合、あるいはソケットがすでにバインドされている場合。IllegalArgumentException
- bindpointが、このソケットによってサポートされていないSocketAddressサブクラスである場合SecurityException
- セキュリティ・マネージャが存在し、そのcheckListen
メソッドがローカル・ポートへのバインドを許可しない場合。- 導入されたバージョン:
- 1.4
- 関連項目:
-
getInetAddress
public InetAddress getInetAddress()ソケットの接続先のアドレスを返します。ソケットが
閉じられる
前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先アドレスを返します。- 戻り値:
- このソケットの接続先のリモートIPアドレス。ソケットが接続されていない場合は
null
。
-
getLocalAddress
public InetAddress getLocalAddress()ソケットのバインド先のローカル・アドレスを取得します。セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャの
checkConnect
メソッドがローカル・アドレスおよび-1
を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック
・アドレスが返されます。- 戻り値:
- ソケットのバインド先のローカル・アドレス。セキュリティ・マネージャによって拒否された場合はループバック・アドレス。ソケットが閉じられているか、まだバインドされていない場合はワイルドカード・アドレス。
- 導入されたバージョン:
- 1.1
- 関連項目:
-
getPort
public int getPort()このソケットの接続先のリモート・ポート番号を返します。ソケットが
閉じられる
前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先ポート番号を返します。- 戻り値:
- このソケットの接続先のリモート・ポート番号。ソケットがまだ接続されていない場合は0。
-
getLocalPort
public int getLocalPort()このソケットのバインド先のローカル・ポート番号を返します。ソケットが
閉じられる
前に接続されていた場合、このメソッドはソケットが閉じられたあとも引き続きローカル・ポート番号を返します。- 戻り値:
- このソケットのバインド先のローカル・ポート番号。ソケットがまだバインドされていない場合は -1。
-
getRemoteSocketAddress
public SocketAddress getRemoteSocketAddress()このソケットが接続されている端点のアドレスを返します。ソケットが接続されていない場合はnull
を返します。ソケットが
閉じられる
前に接続されていた場合は、このメソッドはソケットが閉じられたあとも引き続き接続先アドレスを返します。- 戻り値:
- このソケットのリモート端点を表す
SocketAddress
。ソケットがまだ接続されていない場合はnull
。 - 導入されたバージョン:
- 1.4
- 関連項目:
-
getLocalSocketAddress
public SocketAddress getLocalSocketAddress()このソケットのバインド先の端点のアドレスを返します。InetSocketAddress
が表す端点にバインドされているソケットが閉じられている
場合、このメソッドはソケットが閉じられたあともInetSocketAddress
を返します。 その場合、返されたInetSocketAddress
のアドレスはワイルドカード
・アドレスで、そのポートはバインド先のローカル・ポートです。セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャの
checkConnect
メソッドがローカル・アドレスおよび-1
を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック
・アドレスを表すSocketAddress
と、このソケットのバインド先であるローカル・ポートが返されます。- 戻り値:
- このソケットのローカル端点を表す
SocketAddress
。セキュリティ・マネージャによって拒否された場合はループバック・アドレスを表すSocketAddress
。ソケットがまだバインドされていない場合はnull
。 - 導入されたバージョン:
- 1.4
- 関連項目:
-
getChannel
public SocketChannel getChannel()このソケットに関連付けられた一意のSocketChannel
オブジェクトを返します(存在する場合)。チャネル自体が
SocketChannel.open
メソッドまたはServerSocketChannel.accept
メソッドを使用して作成された場合にだけ、ソケットにチャネルが存在します。- 戻り値:
- このソケットに関連付けられたソケット・チャネル。このソケットがチャネル用に作成されたものでない場合は
null
- 導入されたバージョン:
- 1.4
-
getInputStream
public InputStream getInputStream() throws IOExceptionこのソケットの入力ストリームを返します。このソケットにチャネルが関連付けられている場合、結果として得られる入力ストリームは、その操作のすべてをチャネルに委譲します。 そのチャネルが非ブロック・モードである場合、入力ストリームの
read
操作がIllegalBlockingModeException
をスローします。次の状況では、入力ストリームからの読取りは「割り込み」です:
- ソケットは
SocketChannel
を持つ「関連」です。 その場合、入力ストリームからのスレッド読取りを中断すると、基礎となるチャネルがクローズされ、読取りメソッドにより、中断ステータスが設定されたClosedByInterruptException
がスローされます。 - ソケットはシステムのデフォルトのソケット実装を使用し、「仮想スレッド」PREVIEWは入力ストリームから読み取ります。 その場合、仮想スレッドを中断すると、仮想スレッドが復帰してソケットを閉じます。 読取りメソッドは、中断ステータスが設定された
SocketException
をスローします。
異常な状況下では、リモート・ホストやネットワーク・ソフトウェアによって使用している接続が解除される可能性があります(TCP接続の場合であれば接続がリセットされるなど)。 接続の解除がネットワーク・ソフトウェアによって検出された場合、返された入力ストリームに対して次のことが当てはまります。
ネットワーク・ソフトウェアがソケットによってバッファリングされたバイトを破棄する可能性がある。 ネットワーク・ソフトウェアによって破棄されていないバイトは、
read
を使って読み取ることができる。ソケットでバッファリングされたバイトがない場合、またはバッファリングされたすべてのバイトが
read
によって消費された場合、以降のread
への呼出しはすべて、IOException
をスローします。ソケットでバッファリングされたバイトがなく、ソケットが
close
を使用して閉じられていない場合、available
は0
を返します。
返された
InputStream
をクローズすると、関連付けられたソケットがクローズします。- 戻り値:
- このソケットからバイトを読み込むための入力ストリーム。
- 例外:
IOException
−入力ストリームの作成時に入出力エラーが発生した場合、ソケットがクローズされている場合、ソケットが接続されていない場合、またはshutdownInput()
を使ってソケットの入力がシャットダウンされた場合
- ソケットは
-
getOutputStream
public OutputStream getOutputStream() throws IOExceptionこのソケットの出力ストリームを返します。このソケットにチャネルが関連付けられている場合、結果として得られる出力ストリームは、その操作のすべてをチャネルに委譲します。 そのチャネルが非ブロック・モードである場合、出力ストリームの
write
操作がIllegalBlockingModeException
をスローします。次の状況では、出力ストリームへの書込みは「割り込み」です:
- ソケットは
SocketChannel
を持つ「関連」です。 その場合、出力ストリームへのスレッド書込みを中断すると、基礎となるチャネルがクローズされ、書込みメソッドにより、中断ステータスが設定されたClosedByInterruptException
がスローされます。 - ソケットはシステムのデフォルトのソケット実装を使用し、「仮想スレッド」PREVIEWは出力ストリームに書き込みます。 その場合、仮想スレッドを中断すると、仮想スレッドが復帰してソケットを閉じます。 書込みメソッドは、中断ステータスが設定された
SocketException
をスローします。
返された
OutputStream
をクローズすると、関連付けられたソケットがクローズします。- 戻り値:
- このソケットにバイトを書き込むための出力ストリーム。
- 例外:
IOException
−出力ストリームの作成中に入出力エラーが発生した場合、またはソケットが接続されていない場合。
- ソケットは
-
setTcpNoDelay
public void setTcpNoDelay(boolean on) throws SocketException TCP_NODELAY
を有効または無効にします(Nagleのアルゴリズムの有効、無効の切り替え)。- パラメータ:
on
−TCP_NODELAYを有効にする場合はtrue
、無効にする場合はfalse
。- 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。- 導入されたバージョン:
- 1.1
- 関連項目:
-
getTcpNoDelay
public boolean getTcpNoDelay() throws SocketExceptionTCP_NODELAY
が有効かどうかを調べます。- 戻り値:
TCP_NODELAY
が有効かどうかを示すboolean
値。- 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。- 導入されたバージョン:
- 1.1
- 関連項目:
-
setSoLinger
public void setSoLinger(boolean on, int linger) throws SocketException - パラメータ:
on
−遅延時間を有効にするかどうかを指定。linger
−onがtrueの場合は、遅延時間。- 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。IllegalArgumentException
−遅延時間の値が負の数値である場合。- 導入されたバージョン:
- 1.1
- 関連項目:
-
getSoLinger
public int getSoLinger() throws SocketExceptionReturns setting forSO_LINGER
.戻り値 -1は、このオプションが無効になっていることを意味します。 設定はソケットを閉じる場合にだけ影響します。- 戻り値:
SO_LINGER
の設定。- 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。- 導入されたバージョン:
- 1.1
- 関連項目:
-
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
public boolean getOOBInline() throws SocketExceptionSO_OOBINLINE
が有効かどうかを調べます。- 戻り値:
SO_OOBINLINE
が有効かどうかを示すboolean
値。- 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。- 導入されたバージョン:
- 1.4
- 関連項目:
-
setSoTimeout
public void setSoTimeout(int timeout) throws SocketException 指定されたタイムアウト(ミリ秒)を使ってSO_TIMEOUT
を有効または無効にします。 このオプションを正のタイムアウト値に設定すると、このソケットに関連付けられているInputStreamに対するread()コールは、この時間のみブロックされます。 タイム・アウトの期限が切れると、Socketがまだ有効であってもjava.net.SocketTimeoutExceptionが発行されます。 タイム・アウト0は無限のタイム・アウトとして解釈されます。 このオプションは、ブロック処理に入る前に有効にしておく必要があります。- パラメータ:
timeout
- ミリ秒で表される、指定されたタイム・アウト。- 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合IllegalArgumentException
-timeout
が負の値の場合- 導入されたバージョン:
- 1.1
- 関連項目:
-
getSoTimeout
public int getSoTimeout() throws SocketExceptionReturns setting forSO_TIMEOUT
.このオプションが無効(タイム・アウトが無限)の場合は0を返します。- 戻り値:
SO_TIMEOUT
の設定- 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。- 導入されたバージョン:
- 1.1
- 関連項目:
-
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
public int getSendBufferSize() throws SocketExceptionこのSocket
で使われるSO_SNDBUF
オプションの値を取得します。これは、このSocket
で出力用としてプラットフォームが使うバッファのサイズです。- 戻り値:
- この
Socket
のSO_SNDBUF
オプションの値。 - 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。- 導入されたバージョン:
- 1.2
- 関連項目:
-
setReceiveBufferSize
public void setReceiveBufferSize(int size) throws SocketException このSocket
のSO_RCVBUF
オプションを指定された値に設定します。SO_RCVBUF
オプションは、使用するネットワーク入出力バッファに設定するサイズのヒントとして、プラットフォームのネットワーク・コードが使います。受信バッファのサイズを増やすと、大規模な接続でのネットワーク入出力のパフォーマンスを上げることができます。一方、サイズを減らすと、受信データのバックログを減らすことができます。
SO_RCVBUF
はヒントなので、アプリケーションでバッファのサイズ設定を検証する必要がある場合は、getReceiveBufferSize()
を呼び出してください。SO_RCVBUF
の値は、リモート・ピアに通知されるTCP受信ウィンドウの設定にも使用されます。 一般に、ソケットが接続されているかぎり、このウィンドウ・サイズはいつでも変更できます。 ただし、64Kを超える受信ウィンドウを要求する場合は、ソケットをリモート・ピアに接続する前に変更を要求する必要があります。 次の2つの場合に注意してください。- ServerSocketから受け入れたソケットの場合、ServerSocketをローカル・アドレスにバインドする前に、
ServerSocket.setReceiveBufferSize(int)
を呼び出してこれを実行する必要があります。 - クライアント・ソケットの場合、ソケットをそのリモート・ピアに接続する前に、setReceiveBufferSize()を呼び出す必要があります。
- パラメータ:
size
- 受信バッファ・サイズの設定サイズ。 この値は0より大きくなければならない。- 例外:
IllegalArgumentException
- 値が0または負の値である場合。SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。- 導入されたバージョン:
- 1.2
- 関連項目:
- ServerSocketから受け入れたソケットの場合、ServerSocketをローカル・アドレスにバインドする前に、
-
getReceiveBufferSize
public int getReceiveBufferSize() throws SocketExceptionこのSocket
で使われるSO_RCVBUF
オプションの値を取得します。これは、このSocket
で入力用としてプラットフォームが使うバッファのサイズです。- 戻り値:
- この
Socket
のSO_RCVBUF
オプションの値。 - 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。- 導入されたバージョン:
- 1.2
- 関連項目:
-
setKeepAlive
public void setKeepAlive(boolean on) throws SocketException SO_KEEPALIVE
を有効または無効にします。- パラメータ:
on
−ソケットをオンのままにしておくかどうかを指定。- 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。- 導入されたバージョン:
- 1.3
- 関連項目:
-
getKeepAlive
public boolean getKeepAlive() throws SocketExceptionSO_KEEPALIVE
が有効かどうかを調べます。- 戻り値:
SO_KEEPALIVE
が有効かどうかを示すboolean
値。- 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。- 導入されたバージョン:
- 1.3
- 関連項目:
-
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)
優先フィールドにビットを設定すると、操作が許可されないことを示す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
public int getTrafficClass() throws SocketExceptionこのソケットから送信されるパケットのIPヘッダーのトラフィック・クラスまたはサービス・タイプを取得します。使用するネットワーク実装が、
setTrafficClass(int)
を使用して設定されたトラフィック・クラスまたはサービス型を無視することがあるので、このSocketでsetTrafficClass(int)
メソッドを使用して以前に設定された値とは異なる値がこのメソッドから返されることがあります。- 戻り値:
- すでに設定されているトラフィック・クラスまたはサービス型
- 例外:
SocketException
- トラフィック・クラスまたはサービス・タイプの値を取得する際にエラーが発生した場合。- 導入されたバージョン:
- 1.4
- 関連項目:
-
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
public boolean getReuseAddress() throws SocketExceptionSO_REUSEADDR
が有効かどうかを調べます。- 戻り値:
SO_REUSEADDR
が有効かどうかを示すboolean
値。- 例外:
SocketException
- 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。- 導入されたバージョン:
- 1.4
- 関連項目:
-
close
public void close() throws IOExceptionこのソケットを閉じます。このソケットの入出力操作で現在ブロックされているすべてのスレッドが
SocketException
をスローします。ソケットが閉じられると、その後のネットワークにそのソケットを使用することはできません(つまり、再接続または再バインドはできない)。 新しいソケットを作成する必要があります。
このソケットをクローズすると、このソケットの
InputStream
とOutputStream
もクローズされます。このソケットに関連するチャネルが存在する場合は、そのチャネルも閉じられます。
- 定義:
close
、インタフェースAutoCloseable
- 定義:
close
、インタフェースCloseable
- 例外:
IOException
- このソケットを閉じるときに入出力エラーが発生した場合。- 関連項目:
-
shutdownInput
public void shutdownInput() throws IOExceptionこのソケットの入力ストリームを「ストリームの終わり」に設定します。 ソケットの入力ストリーム側に送信されたデータはすべて、確認されたあと何の通知もなく破棄されます。ソケットでこのメソッドを呼び出した後にソケットの入力ストリームから読み込むと、ストリームの
available
メソッドは0を返し、read
メソッドは-1
(ストリームの終わり)を返します。- 例外:
IOException
- このソケットを停止するときに入出力エラーが発生した場合。- 導入されたバージョン:
- 1.3
- 関連項目:
-
shutdownOutput
public void shutdownOutput() throws IOExceptionこのソケットの出力ストリームを無効にします。 TCPソケットの場合、それまでに書き込まれたデータのすべてが、TCPの通常の接続終了シーケンスに従って送信されます。 ソケットでshutdownOutput()を呼び出したあとにソケットの出力ストリームに書き込むと、ストリームはIOExceptionをスローします。- 例外:
IOException
- このソケットを停止するときに入出力エラーが発生した場合。- 導入されたバージョン:
- 1.3
- 関連項目:
-
toString
public String toString()このソケットをString
に変換します。 -
isConnected
public boolean isConnected()ソケットの接続状態を返します。ノート: ソケットを閉じても、接続状態はクリアされません。つまり、閉じられたソケット(
isClosed()
を参照してください)に対しては、閉じられたソケットが閉じられる前に正常に接続されていた場合にtrue
が返されます。- 戻り値:
- ソケットがサーバーに正常に接続された場合はtrue
- 導入されたバージョン:
- 1.4
-
isBound
public boolean isBound()ソケットのバインディング状態を返します。ノート: ソケットを閉じても、バインディング状態はクリアされません。つまり、閉じられたソケット(
isClosed()
を参照してください)についてtrue
が正常に閉じられる前にバインドされていた場合、このメソッドはそのソケットを返します。- 戻り値:
- ソケットがアドレスに正常にバインドされた場合はtrue
- 導入されたバージョン:
- 1.4
- 関連項目:
-
isClosed
public boolean isClosed()ソケットの閉じた状態を返します。- 戻り値:
- ソケットが閉じた場合はtrue
- 導入されたバージョン:
- 1.4
- 関連項目:
-
isInputShutdown
public boolean isInputShutdown()ソケット接続の読込み側の半分が閉じているかどうかを返します。- 戻り値:
- ソケットの入力が停止した場合はtrue
- 導入されたバージョン:
- 1.4
- 関連項目:
-
isOutputShutdown
public 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
メソッドでこの操作が許可されていない場合。- 関連項目:
-
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
-