Принятие соединения с ACE_SOCK_Acceptor

Я только начал изучать ACE. Я попробовал некоторые из их простых примеров и столкнулся с проблемой. Это мой код:

int _tmain(int argc, _TCHAR* argv[])
{
ACE_INET_Addr server_addr;
ACE_SOCK_Acceptor acceptor;
ACE_SOCK_Stream stream;

if(server_addr.set(8888) == -1) return 1;
if(acceptor.open(server_addr, 1) == -1) return 1;
....
}

Это всегда возвращает -1, когда я звоню acceptor.open(...), Я немного новичок в сетевом программировании. Насколько я могу судить, в коде нет ничего плохого. Я программирую на ноутбуке с Wi-Fi, это имеет значение? Также у меня включен брандмауэр. (Пробовал выключать, без разницы).

Это программа на стороне сервера. Нужно ли мне как-то настраивать компьютер?

Любая помощь будет оценена.

0

Решение

К вашему сведению, вот список учебники вы можете найти в Интернете. Я бы порекомендовал использовать каркас Reactor, пример находится под $ ACE_ROOT \ примеры \ Reactor \ TP_Reactor

Но, переходя к вашему вопросу, вам не нужно использовать set (), вместо этого просто используйте конструктор:

#include <ace/ACE.h>
#include <ace/SOCK_Acceptor.h>
#include <ace/INET_Addr.h>
#include <ace/Log_Msg.h>

int main(int argc, char *argv[])
{
ACE_SOCK_Acceptor acceptor;
ACE_INET_Addr server_addr(8888);

// open a port using the acceptor; reuse the address later
if (acceptor.open(server_addr, 1) == -1)
{
ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT("%N:%l: Failed to open ")
ACE_TEXT ("listening socket. (errno = %i: %m)\n"), ACE_ERRNO_GET), -1);
}

// ...

return 0;
}
0

Другие решения

Других решений пока нет …