找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 9364|回复: 6

ACE安装(IPV6)

[复制链接]
发表于 2009-3-20 12:09:32 | 显示全部楼层 |阅读模式
经过最近的一段时间摸索,发现了若要使用IPV6,必须把ACE整个wrapper下载下来,进行编译

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

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

#define ACE_HAS_IPV6
#define ACE_USES_IPV4_IPV6_MIGRATION

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

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

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

非常感谢!
发表于 2009-3-20 21:34:00 | 显示全部楼层
编译错误提示是什么?
我没开过这两个选项。
发表于 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之间过渡的吗,定义它代表什么呢?
发表于 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地址吗?在底层上如何解释呢?
发表于 2011-12-7 13:45:48 | 显示全部楼层
有编译宏定义,更改config.h,可以同时支持IPV4和IPV6。
发表于 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文件怎么改呢?:)
发表于 2011-12-7 16:32:36 | 显示全部楼层
抱歉,我也没弄过这个IPV6,不懂。只知道ACE做了支持。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-14 09:50 , Processed in 0.011345 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表