找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5308|回复: 6

Linux下TCP服务器打开后,Win客户端无法连接

[复制链接]
发表于 2010-1-4 18:17:06 | 显示全部楼层 |阅读模式
#include "ace/OS.h"
#include "ace/INET_Addr.h"
#include "ace/Reactor.h"
#include "ace/Select_Reactor.h"
#include "ace/Synch.h"
#include "ace/SOCK_Acceptor.h"
#include "ace/Event_Handler.h"
#include "ace/Svc_Handler.h"
#include "ace/Acceptor.h"

class ServerSvcHandler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_MT_SYNCH>
{
public:
  ServerSvcHandler()
  {
  }
  ~ServerSvcHandler()
  {
  }
  int open(void *);
  int handle_input(ACE_HANDLE);
  int handle_close(ACE_HANDLE, ACE_Reactor_Mask);
};
int ServerSvcHandler::open(void *)
{
  int ret = ACE_Reactor::instance()->register_handler(this, ACE_Event_Handler::READ_MASK);
  
  char szPeer[64];
  memset(szPeer, 0, sizeof(szPeer));
  ACE_INET_Addr peerAddr;
  peer().get_remote_addr(peerAddr);
  peerAddr.addr_to_string(szPeer, sizeof(szPeer));
  printf("%s enter open\n", szPeer);
}
int ServerSvcHandler::handle_input(ACE_HANDLE h)
{
  return 1;
}
int ServerSvcHandler::handle_close(ACE_HANDLE, ACE_Reactor_Mask)
{
  return 1;
}
typedef ACE_Acceptor<ServerSvcHandler, ACE_SOCK_ACCEPTOR> Acceptor;
static ACE_THR_FUNC_RETURN event_loop(void* arg)
{
  ACE_Reactor *reactor = (ACE_Reactor*)arg;
  ACE_Reactor::instance()->owner(ACE_OS::thr_self());
  printf("enter event_loop\n");
  while (true)
  {
    ACE_Time_Value tv(2, 0);
    reactor->handle_events(&tv);
//    printf("in event_loop\n");
  }
  return 0;
}
Acceptor acceptor;
int main(int argc, char* argv[])
{
  ACE::init();  
  ACE_Select_Reactor select_reactor;
  ACE_Reactor default_reactor(&select_reactor);
  ACE_Reactor::instance(&default_reactor);
  
  ACE_Thread_Manager::instance()->spawn_n(1, event_loop, ACE_Reactor::instance());
  ACE_INET_Addr svrAddr(1234);
  int ret = acceptor.open(svrAddr, ACE_Reactor::instance());
  printf("acceptor.open ret %d\n", ret);
  ACE_Thread_Manager::instance()->wait();
  
  printf("exit main");
  return 1;
}

Windows下的客户端连接失败,Linux下用netstat -l 也看不到1234端口在listen,第一次在Linux下用ACE,Linux不太熟,麻烦大牛给看看,多谢多谢
 楼主| 发表于 2010-1-4 18:19:30 | 显示全部楼层

回复 #1 dustfly_2001 的帖子

或者有没有Linux的简单的C/S例子给我一个看看??多谢多谢
 楼主| 发表于 2010-1-4 19:02:37 | 显示全部楼层

回复 #1 dustfly_2001 的帖子

已找到原因,Linux防火墙没有关闭
发表于 2010-1-23 13:18:52 | 显示全部楼层

太搞笑了

这种错误之前我也犯过,没想到,这还真的有同样的家伙。
发表于 2010-1-23 14:14:55 | 显示全部楼层
从中还是收益的 谢谢
发表于 2010-1-24 22:11:10 | 显示全部楼层
经常是系统问题导致的。所以思路要灵活。
发表于 2010-2-26 01:14:41 | 显示全部楼层
原帖由 dustfly_2001 于 2010-1-4 19:02 发表
已找到原因,Linux防火墙没有关闭
可以设置iptables的,加一条规则就可以了。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-11-22 18:10 , Processed in 0.021238 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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