Présentation de l'API Sockets pour Java 8

Ceci est une version bêta de l'API Sockets. Cette API n'est pas couverte par un contrat de niveau de service ou une politique de dépréciation et peut être soumise à des modifications incompatibles avec les versions antérieures.

Important : les applications de l'environnement d'exécution Java 8 peuvent utiliser des sockets Java natifs sans restrictions, y compris les classes NIO et de leurs méthodes. Les applications exécutées dans l'environnement d'exécution Java 7 sont soumises aux limitations de socket décrites dans cette page.


Les sockets ne sont disponibles que pour les applications payantes et le trafic provenant des sockets est facturé en tant que bande passante sortante. Les sockets sont également limités par des quotas quotidiens et par minute (utilisation intensive).

L'environnement d'exécution Java 7 accepte un socket Java sortant limité utilisant une version modifiée de java.net.Socket et java.net.DatagramSocket.

L'environnement d'exécution 7 n'accepte pas les classes java.nio.SocketChannel java.nio, ni la possibilité d'appeler des options get ou set avec des sockets. L'utilisation de ces fonctionnalités générera une exception Not Implemented. Ces restrictions sont disparaissent par défaut avec l'environnement d'exécution de Java 8.

Les options prises en charge pour les applications de l'environnement d'exécution Java 7 sont les suivantes :

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

Limitations et restrictions (environnement d'exécution Java 7 uniquement)

La prise en charge des sockets dans App Engine pour les applications exécutées dans l'environnement d'exécution Java 7 présente les limitations suivantes :

  • Les sockets sont disponibles uniquement pour les applications payantes.
  • Vous ne pouvez pas créer de socket d'écoute et vous ne pouvez créer que des sockets sortants.
  • Le protocole FTP n'est pas compatible.
  • java.net.URL est toujours configuré pour utiliser l'API URL Fetch dans l'environnement d'exécution Java 7. Pour contourner cette limitation, vous pouvez exécuter votre application dans l'environnement d'exécution Java 8, où java.net.URL et java.net.HttpURLConnection utilisent les sockets natifs Java par défaut.
  • InetAddress.isReachable est un no-op.
  • La plupart des classes de javax.net.ssl sont compatibles.
  • Vous ne pouvez utiliser que TCP ou UDP. Les protocoles arbitraires ne sont pas autorisés.
  • Vous ne pouvez pas établir de liaisons à des adresses IP ou des ports spécifiques.
  • Le port 25 (SMTP) est bloqué. Vous pouvez utiliser le protocole SMTP authentifié sur le port de soumission 587.
  • Les plages IP privées, de diffusion, de multidiffusion et Google (à l'exception de celles énumérées ci-dessous) sont bloquées :

    • DNS publics Google : 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844 (port 53)
    • Gmail SMTPS : smtp.gmail.com (ports 465 et 587)
    • Gmail POP3S : pop.gmail.com (port 995)
    • Gmail IMAPS : imap.gmail.com (port 993)
  • Les descripteurs de socket sont associés à l'application App Engine qui les a créés et ne sont pas transférables (ils ne peuvent pas être utilisés par d'autres applications).

  • Les sockets peuvent être récupérés après deux minutes d'inactivité. Toute opération de socket maintient le socket en vie pendant deux minutes supplémentaires.

  • Vous ne pouvez pas effectuer d'opération Select entre plusieurs sockets disponibles, car cela nécessite d'utiliser java.nio.SocketChannel, qui n'est pas compatible actuellement.

    Utiliser des sockets avec le serveur de développement

    Vous pouvez exécuter et tester du code à l'aide de sockets sur le serveur de développement, sans utiliser de paramètres de ligne de commande spéciaux.

    Exemple App Engine utilisant des sockets (environnement d'exécution Java 7 uniquement)

    Pour un exemple d'utilisation de sockets, consultez l'application de démonstration de socket sur le GitHub de Google Cloud Platform.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Java