"It depends", is unfortunately the answer. For very old software where it's not possible to patch it for IPv6 support (this is rarer than you might think!) then some kind of IPv4 NAT or a DNS64 style "application layer gateway" is required.
You could also potentially add a specific wrapper for your application e.g. wrapping MySQL connections inside of stunnel allows them to run over IPv6 in version of MySQL built with v6 support, or for simple daemons you can do things like set up socat to proxy between an IPv4 socket and an IPv6 socket.
Almost no software you're likely to be running is incompatible with IPv6, though. Software support for IPv6 is way ahead of actual network implementation.
>Almost no software you're likely to be running is incompatible with IPv6, though. Software support for IPv6 is way ahead of actual network implementation.
How sure are you of this ?
Now, ofcourse all the major widely deployed software, be it browsers, web servers, mail servers and clients, remote file systems and similar are already IPv6 ready. What about all the many many millions of custom built systems and applications ? The kinds you will never see, that's hidden behind a corporate wall in use by 10-100 people.
Or all the devices that people have bought - all the wifi routers, IP cameras, network printers, DSL modems and so on ? It doesn't matter how much anyone says that these should have had time to support IPv6. If they arn't, it'll cost someone money to replace them - not all are willing to do that.
You could also potentially add a specific wrapper for your application e.g. wrapping MySQL connections inside of stunnel allows them to run over IPv6 in version of MySQL built with v6 support, or for simple daemons you can do things like set up socat to proxy between an IPv4 socket and an IPv6 socket.
Almost no software you're likely to be running is incompatible with IPv6, though. Software support for IPv6 is way ahead of actual network implementation.