ACE как включить IPv6

Я использую ACE v5.7.1 в Linux. Я хочу включить ipv6, чтобы мой сервер также мог принимать запросы ipv6. Я добавил #define ACE_HAS_IPV6 в файл ace/config.h. Но все же возвращаемое значение метода ACE_ipv6_enabled() равно 0

когда я создаю простой клиент с ACE_INET_Addr (порт, ipv6_address) и пытаюсь подключиться к серверу, он выдает ошибку ACE_INET_Addr :: разрешение отклонено

Помогите мне, пожалуйста.


person smitajit    schedule 27.01.2012    source источник


Ответы (1)


Кажется, вы используете для этого неправильный конструктор. Взгляните на эту ссылку:

http://www.dre.vanderbilt.edu/Doxygen/5.7.1/html/ace/a00246.html#0ef39cee9fc65be37ca6ce4092b6ea04

Вам нужно будет вызвать его, как показано ниже:

ACE_INET_Addr(port, <hostname e.g. "localhost6">, AF_INET6);

По умолчанию у вас есть AF_UNSPEC, что, вероятно, предполагает AF_INET

person Karlson    schedule 27.01.2012
comment
я добавил AF_INET6 в ACE_INET_Addr(). но все же мой клиент выдает ошибку ACE_INET_Addr::ACE_INET_Addr: [::1]: операция не разрешена - person smitajit; 30.01.2012
comment
@smitajit Можете ли вы опубликовать свой вызов конструктора? - person Karlson; 30.01.2012
comment
ACE_INET_Addr my_addr(5056,[::1],AF_INET6).значение, возвращаемое функцией ACE::ipv6_enabled(), равно 0. - person smitajit; 31.01.2012
comment
@smitajit Был ли ACE скомпилирован с ACE_HAS_IPV6? - person Karlson; 31.01.2012
comment
@smitajit Что происходит, когда вы пытаетесь пропинговать тот же адрес? - person Karlson; 01.02.2012
comment
@smitajit Я изменил ответ. По неизвестной пока причине системе не нравится ::1 в конструкторе, но localhost6 работает. - person Karlson; 03.02.2012
comment
@smitajit Судя по всему, вы отредактировали «config.h» после компиляции, а не скомпилировали ACE с конфигурацией «--enable-ipv6» - person Karlson; 03.02.2012