|
看了ACE_Connector.close()的代码,里面有释放Handler对象的操作。但用例子测试了一下,发现有个奇怪的问题,就是ACE_Connector.close调用之后,还可以成功通过Handler对象来发送数据。用例如下:- MyServiceHandler * handler= new MyServiceHandler;
- Connector myconnector;
- myconnector.connect(handler, addr);
- handler->Peer()->send(argv[1],20);
- ACE_OS::printf("before recv in main\n");
- ret = handler->Peer()->recv(date, 20);
- ACE_OS::printf("after recv in main, back date is %s, ret = %d \n", date, ret);
-
- myconnector.close();
- //delete handler;
-
- ACE_OS::sleep(2);
-
-
- ret = handler->Peer()->send(argv[1],20);
- ACE_OS::printf("before exit, ret = %d \n", ret);
复制代码 connector.close()调用之后,最后的一个snd操作是可以成功的, 而且MyServiceHandler 的析构函数也没有立刻调用。
但是把红色的部分注释去掉的话,后面的发送就失败了。
哪位老大帮忙解答一下。多谢多谢。 |
|