【发布时间】:2011-08-18 22:51:10
【问题描述】:
实现支持 IPV6 的套接字接口的最佳方法是什么。 现有代码仅支持 IPV4。现在,要支持 IPV6,我也没有什么疑问...
1) _我应该用 IPV6 API 替换所有 IPV4 的 API。比如说 AF_INET6 的 AF_INET,sockaddr_in6 的 sockaddr_in 等等。这些新的 API 会支持这两种协议吗?
2) 还是我应该保持这种状态...
#ifdef IPV6_SUPPORT
sockaddr_in6 addr;
RTMemoryUtil::memset( &addr, 0, (int)sizeof( addr ) );
addr.sin6_family = AF_INET6;
addr.sin6_port = (unsigned short)htons( port );
RTMemoryUtil::memcpy( &addr.sin6_addr, address, (int)sizeof( *address ) );
#else
sockaddr_in addr;
RTMemoryUtil::memset( &addr, 0, (int)sizeof( addr ) );
addr.sin_family = AF_INET;
addr.sin_port = (unsigned short)htons( port );
RTMemoryUtil::memcpy( &addr.sin_addr, address, (int)sizeof( *address ) );
#endif
请提出是否有更好的方法或第二个过程有什么缺陷。
【问题讨论】:
-
“非此即彼”将不起作用。 “两者”是目前要走的路。