1.说明
使用poco net库中connector类(基于Connector Pattern思想),将服务初始化和服务行为分离,对Connector进行简单重构,编写ServiceHandler实现简单业务。主要解决:
1)服务初始化时,连接断开的重连。
2)执行服务业务行为时,连接断开的重连。
2.代码
SocketConnectorTest.h
#ifndef Net_SocketConnectorTest_INCLUDED
#define Net_SocketConnectorTest_INCLUDED
#include "Poco/Net/Net.h"
#include "Poco/Net/SocketNotification.h"
#include "Poco/Net/SocketAddress.h"
#include "Poco/Net/StreamSocket.h"
#include "Poco/Observer.h"
namespace Poco {
namespace Net {
template <class ServiceHandler>
class SocketConnector
{
public:
explicit SocketConnector(SocketAddress& address):
_pReactor(0)
{
_socket.connectNB(address);
}
SocketConnector(SocketAddress& address, SocketReactor& reactor):
_pReactor(0)
{
_socket.connectNB(address);
registerConnector(reactor);
}
virtual ~SocketConnector()
{
try
{
unregisterConnector();
}
catch (...)
{
poco_unexpected();
}
}
virtual void registerConnector(SocketReactor& reactor)
{
_pReactor = &reactor;
_pReactor->addEventHandler(_socket, Poco::Observer<SocketConnector, ReadableNotification>(*this, &SocketConnector::onReadable));
_pReactor->addEventHandler(_socket, Poco::Observer<SocketConnector, WritableNotification>(*this, &SocketConnector::onWritable)

本文介绍了如何使用C++ POCO库中的Connector模式来实现TCP客户端的服务初始化和行为分离,强调了在服务初始化和执行过程中处理连接断开的重连功能。通过SocketConnectorTest.h和SocketConnectorTest.cpp文件展示了具体的代码实现。
最低0.47元/天 解锁文章

932

被折叠的 条评论
为什么被折叠?



