Uso o que estou assumindo como um endereço "codificado"
Sim. "Codificação" significa colocar as informações diretamente no seu código, em vez de usar alguns meios indiretos (como DNS ou arquivo de configuração simples). Este é um termo geral e não limitado a IP ou mesmo a redes.
Se suas chamadas connect () se referirem diretamente a um endereço IP - sim, você está codificando o endereço. Se o endereço mudar, você terá que recompilar o programa.
Os endereços IPV6 são sempre dinâmicos?
Não. O IPv4 e o IPv6 seguem as mesmas regras gerais:
Se o seu provedor de serviços de Internet fornece endereços estáticos ou dinâmicos depende inteiramente do contrato que você assina com eles (incluindo o plano escolhido etc.)
Para conexões residenciais e de negócios menores, os endereços são alocados pelo ISP de acordo com as políticas do ISP. Você pode obter um endereço IPv4 público ou uma dúzia, pode obter um IPv6 / 64 ou a / 48, essas alocações podem ser estáticas ou podem mudar todos os dias - tudo depende do contrato que você assinou com o ISP.
Como você atribui endereços aos seus servidores e outros computadores na sua LAN depende inteiramente de você. Se você deseja que o endereço de um dispositivo permaneça estático, você pode fazer isso.
É verdade que a atribuição dinâmica via SLAAC no IPv6 é um pouco mais comum que o DHCP no IPv4. No entanto, 'dinâmico' não significa que o endereço será alterado. De fato, com o IPv6 SLAAC, o mesmo dispositivo geralmente continuará escolhendo o mesmo endereço para sempre.
Por fim, nada impede que você configure manualmente um endereço fixo para o dispositivo. Fazer isso é perfeitamente normal no IPv6.
Ou para mudar para uma rede IPV6, seria necessário obter um endereço IPV6 estático para codificar no meu aplicativo?
Você não deve codificar endereços específicos em seu aplicativo em primeiro lugar.
Eu acho que estava mais perguntando sobre como evitar a codificação embutida de um endereço em um aplicativo
Coloque-os em algum lugar fora do aplicativo. Os dois métodos mais comuns são:
usando DNS - isto é, configurando um nome de domínio para apontar para o servidor;
fornecendo um mecanismo de configuração - como um arquivo .ini ou o Registro ou algo completamente diferente.
Estou pensando que precisaria obter um nome de domínio ... e depois "codificar" um nome IPV6 DNS no meu aplicativo
Sim. Você ainda está codificando alguma coisa (o nome do domínio), mas pelo menos é muito menos provável que o nome do domínio mude - enquanto o endereço IP de um servidor pode ter muitos motivos para ser alterado. (Por exemplo, o servidor pode ser movido para outro local ou toda a rede pode ser reestruturada ou alternada para um ISP diferente.)
Embora eu diria que não existe algo como "nomes IPv6 DNS". Um nome de domínio pode se referir aos endereços IPv4 e IPv6 ao mesmo tempo e pode até ter vários endereços do mesmo tipo.
Um programa bem escrito tentará todos os endereços que encontrar (por exemplo, com a ajuda da função getaddrinfo ()). Isso permite que ele funcione em redes somente IPv4 e somente IPv6, bem como em redes mistas.
www.google.com
) e endereços numéricos. Ou seja, faça uma pesquisa de DNS primeiro. Seu sistema operacional, seja o que for, tem bibliotecas para isso.