首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能使用Poco TCPServer和TCPServerConnectionFactory

不能使用Poco TCPServer和TCPServerConnectionFactory
EN

Stack Overflow用户
提问于 2014-08-13 12:52:29
回答 1查看 986关注 0票数 0

我在一个活动中使用一个TCPServer。为了简化我的设计,我使用TCPServerConnectionFactory进行活动。使用该方法,我的活动实现了CreateConnection()方法。

要创建我的TCPServer,我做:

代码语言:javascript
复制
Poco::Net::TCPServer(this, serverSocket);

不幸的是,当我的TCPServer被销毁时,它也破坏了我在参数中给出的(这个)。所以这叫我的活动,这真的很烦人。

深入研究Poco代码,我看到TCPServer创建了一个Poco::shared_Ptr of ( this ),当这个shared_ptr被销毁时,它删除了Shared_Ptr的内容。

在TCPServer的生命结束时,我怎样才能把它传递给TCPServer而不被摧毁呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-13 23:20:48

您必须将堆上分配的连接工厂传递给TCPServer。有关示例,请参见TimeServer示例:

代码语言:javascript
复制
class TimeServerConnection: public TCPServerConnection
{
  //...
};

// ...

class TimeServerConnectionFactory: public TCPServerConnectionFactory
{
  // ...
  TCPServerConnection* createConnection(const StreamSocket& socket)
  {
    return new TimeServerConnection(socket, _format);
  }
  // ...
};

// set-up a server socket
ServerSocket svs(port);
// retain the handle to shared ptr for later use
TCPServerConnectionFactory::Ptr pTSCF = new TimeServerConnectionFactory(format);
// set-up a TCPServer instance
TCPServer srv(pTSCF, svs);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25286735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档