我的服务器正在创建IPV6套接字。
在客户端上,我正在创建IPV4套接字。现在,在客户端的连接API中,我正在传递IPV4和IPV6地址结构的套接字描述符。
INET_connect( sock,(SocketAddress *)in6_addr,(int)sizeof( sockaddr_in6 ) ) == 0 )
其中
struct sockaddr_in6 in6_addr;
我在连接中遇到错误。是由于这个还是其他原因?请注意,我的服务器是IPV6(具有IPV6地址)
您必须使用IPV6套接字连接到IPV6地址,或使用隧道服务来将IPV4地址与IPV6地址之间的流量进行转换。
在客户端上,我正在创建IPV4套接字
为什么?不要那样做如果您的客户端程序创建了AF_INET套接字(或在仅ip4的OS上运行),则您无法执行在客户端进行这种连接。
如果您只需要这样做,那么该服务器应该适合处理IPv4客户端。
服务器可能能够接受来自ip4客户端的连接请求-但只有在服务器端禁用IPV6_V6ONLY套接字选项,并且很明显地,如果服务器的操作系统允许,它才会发生。在这种情况下,ip6服务器将通过ipv4映射的ipv6地址看到ip4客户端。