我刚开始学习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;
....
}
当我致电acceptor.open(...)
时,它总是返回-1。我对网络编程有点新意。据我所知,代码没有任何问题。我正在使用Wi-Fi在笔记本电脑上编程,这有什么不同吗?我也开启了防火墙。 (尝试将其关闭,没有区别)。
这是服务器端程序。我必须以某种方式配置我的电脑吗?
任何帮助都将不胜感激。
答案 0 :(得分:0)
Fyi,这是tutorials you can find online的列表。我建议使用Reactor框架,例如 $ ACE_ROOT \ examples \ 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;
}