我在IPv6套接字连接中遇到错误

问题描述 投票:0回答:2

我的服务器正在创建IPV6套接字。

在客户端上,我正在创建IPV4套接字。现在,在客户端的连接API中,我正在传递IPV4和IPV6地址结构的套接字描述符。

INET_connect( sock,(SocketAddress *)in6_addr,(int)sizeof( sockaddr_in6 ) ) == 0 )

其中

struct sockaddr_in6 in6_addr;

我在连接中遇到错误。是由于这个还是其他原因?请注意,我的服务器是IPV6(具有IPV6地址)

c tcp ipv6
2个回答
3
投票

您必须使用IPV6套接字连接到IPV6地址,或使用隧道服务来将IPV4地址与IPV6地址之间的流量进行转换。


3
投票

在客户端上,我正在创建IPV4套接字

为什么?不要那样做如果您的客户端程序创建了AF_INET套接字(或在仅ip4的OS上运行),则您无法执行在客户端进行这种连接。

如果您只需要这样做,那么该服务器应该适合处理IPv4客户端。

服务器可能能够接受来自ip4客户端的连接请求-但只有在服务器端禁用IPV6_V6ONLY套接字选项,并且很明显地,如果服务器的操作系统允许,它才会发生。在这种情况下,ip6服务器将通过ipv4映射的ipv6地址看到ip4客户端。

© www.soinside.com 2019 - 2024. All rights reserved.