znsky 发表于 2009-3-20 12:09:32

ACE安装(IPV6)

经过最近的一段时间摸索,发现了若要使用IPV6,必须把ACE整个wrapper下载下来,进行编译

我的环境是在Windows下,VC7.1

为了使ACE能支持IPV6,我在config.h中加入了

#define ACE_HAS_IPV6
#define ACE_USES_IPV4_IPV6_MIGRATION

但是在编译的时候就会出现错误?

如果不加这两行的话,编译能通过,而且正常的IPV4通信没问题,IPV6的就不行。

我想请问老大,俺在编译的时候应该怎么设置才能正常编译通过,让它支持IPV6呢?

非常感谢!

winston 发表于 2009-3-20 21:34:00

编译错误提示是什么?
我没开过这两个选项。

stay 发表于 2011-12-7 09:26:50

呃,两年前的帖子了...
   我用VS2008编译,编译的时候如果两个宏都添加会在嵌入清单时发生错误,把嵌入清单取消后就不会有错误。
      小弟最近刚学ACE,有个问题,使用添加这两个宏后编译的DLL,通信时只能用IPV6,连接服务器的IPV4地址会连接不上。我看了ACE_INET_Addr类的源码,大概明白了为什么,因为绑定open的时候一定会先确定它的protocol_family,如果使用IPV6的DLL时,protocol_family直接被确定为23也就是IPV6了。
      可是我想既能连接服务器IPV6地址又可以连接IPV4地址呢?请教各位了,这可能实现不?代码中见到了许多ACE_USES_IPV4_IPV6_MIGRATION这个宏,请问这个宏是干嘛的,是IPV4和IPV6之间过渡的吗,定义它代表什么呢?

stay 发表于 2011-12-7 10:04:04

ACE_USES_IPV4_IPV6_MIGRATION 在源码的注释中的解释是“Enable IPv6 support on platforms that don't have IPv6 turned on by default”,也就是为了在默认没有启用IPV6的平台上支持IPV6。

还是不明白,对服务器的连接可以同时通过IPV6地址和IPV4地址吗?在底层上如何解释呢?

winston 发表于 2011-12-7 13:45:48

有编译宏定义,更改config.h,可以同时支持IPV4和IPV6。

stay 发表于 2011-12-7 15:00:13

winston说得再详细些吧,具体怎么更改呢,我的config.h文件和楼主的一样:
#define ACE_HAS_IPV6
#define ACE_USES_IPV4_IPV6_MIGRATION
#include "ace/config-win32.h"
如果把#define ACE_USES_IPV4_IPV6_MIGRATION去掉也不行啊。

比如,如果服务器端这样写:
ACE_INET_Addr serverAddr;
serverAddr.set_port_number(6000);

//查看设置后的protocol family总是23,也就是AF_INET6
cout<<cout<<"protocol family:"<<serverAddr.get_type()<<endl;

ACE_SOCK_Acceptor acceptor;
if (acceptor.open(serverAddr, 1) == -1)
{
//failed
}
else
{
//succeed
}
客户端发起连接:
ACE_SOCK_Connector connector;
ACE_SOCK_Stream client_peer;
ACE_Time_Value timeout(2,0);
ACE_INET_Addr server;

server.set(“6000”, “ipaddress”);

//此处根据ipaddress的类型而不同
cout<<"protocol family:"<<server.get_type()<<endl;

if (connector.connect(client_peer, server, &timeout) == -1)
{
//failed
}
else
{
//connected
}
----------------------------------------------------------------------------------
这样,客户端发起连接时,只能连接到服务器IPV6的IP地址,怎样才能既可以连接IPV4的IP,也可以连接IPV6的IP呢?
winston说得config.h文件怎么改呢?:)

winston 发表于 2011-12-7 16:32:36

抱歉,我也没弄过这个IPV6,不懂。只知道ACE做了支持。
页: [1]
查看完整版本: ACE安装(IPV6)