繁体   English   中英

接受与ACE_SOCK_Acceptor的连接

[英]Accepting a connection with 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;
    ....
}

当我调用acceptor.open(...)时,它总是返回-1。 我对网络编程有点陌生。 据我所知,代码没有任何问题。 我正在使用Wi-Fi的笔记本电脑上编程,这有什么不同吗? 我也打开了防火墙。 (尝试将其关闭,没有区别)。

这是服务器端程序。 我必须以某种方式配置计算机吗?

任何帮助,将不胜感激。

Fyi,这是您可以在线找到教程列表。 我建议使用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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM