Sockets API for Java 8 の概要

これは Sockets API のベータ版です。この API はサービスレベル契約(SLA)または非推奨ポリシーの対象ではなく、バージョンアップ時に下位互換性が維持されない可能性があります。

重要: Java 8 ランタイムのアプリケーションでは、NIO クラスとそのメソッドの使用を含め、Java のネイティブ ソケットを無制限に使用できます。Java 7 ランタイムで実行されるアプリケーションは、このページに記載されているソケットの制限の対象になります。


ソケットは有料アプリでのみ使用でき、ソケットからのトラフィックは送信帯域幅として課金されます。また、ソケットには日単位の割り当てと分単位(急増)の割り当ての制限が適用されます。

Java 7 ランタイムは、java.net.Socketjava.net.、DatagramSocket など、Java の正規のアウトバウンド ソケットをサポートしています。

Java 7 ランタイムでは、java.nio.SocketChannel という java.nio のクラスはサポートされていません。これらのソケットに対して get または set オプションを使用することはできません。これらの機能を使用すると、Not Implemented 例外が発生します。Java 8 ランタイムをデフォルトで使用すると、この制限はなくなります。

Java 7 ランタイム アプリでサポートされるオプションは次のとおりです。

  • SO_KEEPALIVE
  • SO_DEBUG
  • TCP_NODELAY
  • SO_LINGER
  • SO_OOBINLINE
  • SO_SNDBUF
  • SO_RCVBUF
  • SO_REUSEADDR

制限と制約(Java 7 ランタイムのみ)

アプリが Java 7 ランタイムで実行されている場合の App Engine でのソケットのサポートには、次の制限があります。

  • ソケットは有料アプリでのみ使用できます。
  • リッスン ソケットは作成できません。作成できるのはアウトバウンド ソケットだけです。
  • FTP はサポートされません。
  • java.net.URL は引き続き Java 7 ランタイムの URL Fetch API を使用するように構成されています。この制限を回避するには、アプリを Java 8 ランタイムで実行します。このときに java.net.URLjava.net.HttpURLConnection では Java のネイティブ ソケットがデフォルトで使用されます。
  • InetAddress.isReachable は機能しません。
  • javax.net.ssl のクラスは大半がサポートされます。
  • 使用できるのは TCP と UDP だけで、任意のプロトコルを使用できるわけではありません。
  • 特定の IP アドレスまたはポートにバインドすることはできません。
  • ポート 25(SMTP)はブロックされます。送信ポート 587 の認証済みの SMTP は使用できます。
  • 下記のホワイトリストに登録されていないプライベート、ブロードキャスト、マルチキャスト、Google の IP 範囲はブロックされます。

    • Google パブリック DNS: 8.8.8.88.8.4.42001:4860:4860::88882001:4860:4860::8844 のポート 53
    • Gmail SMTPS: smtp.gmail.com のポート 465 と 587
    • Gmail POP3S: pop.gmail.com のポート 995
    • Gmail IMAPS: imap.gmail.com のポート 993
  • ソケット記述子は作成元の App Engine アプリに関連付けられ、移行可能なものではありません(他のアプリでは使用できません)。

  • ソケットはアクティブでない状態が 2 分続くと回収されます。ソケットが維持される時間は、なんらかのオペレーションが行われると 2 分延長されます。

  • 使用可能な複数のソケットの中から Select を使用していずれかを選択することはできません。これには、java.nio.SocketChannel を使用する必要がありますが、現在はサポートされていないためです。

    開発用サーバーでソケットを使用する

    ソケットを使用したコードは、開発用サーバーでそのまま実行してテストできます。特別なコマンドライン パラメータは必要ありません。

    App Engine でのソケットの使用例(Java 7 ランタイムのみ)

    ソケット使用のサンプルについては、Google Cloud Platform GitHub のソケット デモアプリをご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Java 8 の App Engine スタンダード環境