I use what I am assuming is a "hard coded" address
Sim. "Hardcoding" significa colocar as informações diretamente em 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 se limita ao IP, ou mesmo à rede.
Se as suas chamadas connect () referem-se diretamente a um endereço IP - então sim, você está codificando o endereço. Se o endereço mudar, você terá que recompilar o programa.
Are IPV6 addresses always dynamic?
Não. O IPv4 e o IPv6 seguem as mesmas regras gerais:
-
Se o seu ISP fornece endereços estáticos ou dinâmicos depende inteiramente do contrato que você assina com eles (incluindo o plano que você escolher, etc.)
Para conexões empresariais residenciais e 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, você pode obter um IPv6 / 64 ou um / 48, essas alocações podem ser estáticas ou podem mudar todos os dias - tudo depende do contrato que você assinou com o ISP. / p>
-
Como você atribui endereços a seus servidores e outros computadores dentro de sua LAN depende inteiramente de você. Se você quiser 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 SLAAC do IPv6, 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.
Or to switch to an IPV6 network would I need to get a static IPV6 address to hardcode into my application?
Você não deve codificar endereços específicos em seu aplicativo em primeiro lugar.
I guess I was more asking about how to avoid hard coding an address into an application
Coloque-os em algum lugar fora do aplicativo. Os dois métodos mais comuns são:
-
usando o DNS - ou seja, configurando um nome de domínio para apontar para o seu servidor;
-
fornecendo um mecanismo de configuração - como um arquivo .ini, ou o Registro, ou algo totalmente diferente.
I'm thinking I would need to get a domain name... and then "hard code" a DNS IPV6 name into my application
Sim. Você ainda está codificando alguma coisa (o nome de domínio), mas pelo menos o nome do domínio é muito menos provável de mudar - enquanto o endereço IP de um servidor pode ter muitas razões 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 possa dizer que não existe uma "DNS IPv6 names". Um nome de domínio pode se referir a 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 addreses encontrados (por exemplo, com a ajuda da função getaddrinfo ()). Isso permite que ele funcione em redes somente IPv4 e somente IPv6, bem como mistas.