sockets - 在 C 中使用套接字如何将消息从 IPv6 发送到 IPv4?

标签 sockets networking ipv6 ipv4

我尝试将目标地址转换为 IPv6 格式为 ::ffff:IPv4 .并使用 AF_INET6 的套接字类型。它给 error: Network Unreachable .但使用相同的技术,我能够从 IPV4 通信到 IPV6

提前感谢您的帮助。

最佳答案

IPv4 和 IPv6 是不同的协议(protocol)。他们不互相交谈。
在某些操作系统上,您可以使用 IPv6 套接字并接受传入的 IPv4 连接。但这只是让服务器代码的代码开发更容易的软件。我从来没有见过客户端代码的工作。您必须为此创建正确的套接字类型。
通常你使用 DNS 解析主机名,你会得到多个答案(IPv4 和 IPv6),你遍历它们创建所需的套接字类型并尝试连接。如果它有效,则使用该套接字,否则,您进行下一次迭代以创建新套接字等。
如果您的代码对延迟很敏感,您可能希望实现 happy eyeballs算法。

关于sockets - 在 C 中使用套接字如何将消息从 IPv6 发送到 IPv4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29926870/

相关文章:

c# - Socket tcp c# 如何清除输入缓冲区?

套接字编程中的 Java 拖放问题

networking - 在 UnrealScript 中连接到服务器

networking - 将自定义路由添加到 GKE Pod

node.js - 将 Unity 游戏连接到 Digital Ocean Node.js 服务器

Python 使用 IPv6 地址解析主机名

c - 我如何将这个ipv6地址分配给c中的sscanf?

sockets - 在套接字描述符上读/写linux c

mysql - 在 RDBMS (MySQL) 中存储 IPv4 和 IPv6

c - 调用recvmsg后调用epoll_wait()后udp套接字缓冲区变满