Visão geral da API Sockets para Java

Esta é uma versão Beta da API Sockets. Essa API não é coberta por nenhum SLA nem política de suspensão de uso, estando sujeita a alterações incompatíveis com versões anteriores.

Importante: os aplicativos no ambiente de execução do Java 8 podem usar soquetes Java nativos sem restrições, o que inclui o uso de classes NIO e seus métodos. Os aplicativos em execução no ambiente de execução do Java 7 estão sujeitos às limitações de soquete descritas nesta página.


Os soquetes só estão disponíveis para apps pagos. O tráfego de soquetes é faturado como largura de banda de saída. Os soquetes também são limitados por cotas diárias e por minuto (burst).

O ambiente de execução do Java 7 é compatível com um soquete Java de saída limitada se uma versão modificada de java.net.Socket e java.net.DatagramSocket for usada.

O ambiente de execução do Java 7 não é compatível com classes java.nio.SocketChannel java.nio nem com a capacidade de chamar opções get ou set em soquetes. O uso desses recursos lançará exceções Not Implemented. Essas restrições são lançadas por padrão durante o uso do tempo de execução do Java 8.

As opções compatíveis para aplicativos do tempo de execução do Java 7 são:

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

Limitações e restrições (somente ambiente de execução do Java 7)

O suporte aos soquetes no App Engine para aplicativos em execução no ambiente do Java 7 tem as seguintes limitações:

  • Os soquetes estão disponíveis apenas em apps pagos.
  • Não é possível criar um soquete de escuta. Você só pode criar soquetes de saída.
  • O FTP não é compatível.
  • java.net.URL ainda está configurado para usar a API URL Fetch no ambiente de execução do Java 7. Para contornar essa limitação, é possível executar o aplicativo no ambiente de execução do Java 8, em que java.net.URL e java.net.HttpURLConnection usam soquetes nativos Java por padrão.
  • InetAddress.isReachable é um ambiente autônomo.
  • A maioria das classes em javax.net.ssl é compatível.
  • Só é possível usar TCP ou UDP. Não são permitidos protocolos arbitrários.
  • Não é possível se vincular a portas ou endereços IP específicos.
  • A porta 25 (SMTP) está bloqueada. Ainda é possível usar SMTP autenticado na porta de envio 587.
  • Os intervalos particulares, de transmissão, multicast e de IPs do Google, exceto os colocados na lista de permissões, estão bloqueados:

    • Google Public DNS: 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844 porta 53
    • Gmail SMTPS: smtp.gmail.com portas 465 e 587
    • Gmail POP3S: pop.gmail.com porta 995
    • Gmail IMAPS: imap.gmail.com porta 993
  • Os descritores de soquete estão associados ao app do App Engine que os criou e não são transferíveis. Eles não podem ser usados por outros apps.

  • Os soquetes poderão ser recuperados depois de dois minutos de inatividade. Qualquer operação de soquete mantém o soquete ativo por mais dois minutos.
  • Não é possível usar Select entre vários soquetes disponíveis porque isso exige java.nio.SocketChannel, que não é compatível no momento.

Como usar soquetes com o servidor de desenvolvimento

Você pode executar e testar código usando soquetes no servidor de desenvolvimento, sem usar parâmetros de linha de comando especiais.

Amostra do App Engine que usa soquetes (somente tempo de execução do Java 7)

Para uma amostra que usa soquetes, consulte o app de demonstração do soquete no GitHub do Google Cloud Platform.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Java