socketlistener.cpp
来自「一个Symbian平台上的serverclient模型的简单示例」· C++ 代码 · 共 86 行
CPP
86 行
// SocketListener.cpp
//
#include "SocketListener.h"
#include "sserv.h"
#include "http.h"
CSocketListener::CSocketListener(CSmallServServer& aServer)
: CActive(CActive::EPriorityStandard)
, iServerT(aServer)
{
CActiveScheduler::Add(this);
}
void CSocketListener::ConstructL()
{
User::LeaveIfError(iServer.Connect());
}
CSocketListener::~CSocketListener()
{
Cancel();
delete iClient;
iListener.Close();
iServer.Close();
}
CSocketListener* CSocketListener::NewLC(CSmallServServer& aServer)
{
CSocketListener* object = new (ELeave) CSocketListener(aServer);
CleanupStack::PushL(object);
object->ConstructL();
return object;
}
void CSocketListener::RunL()
{
iServerT.AddRequest(*iClient);
iClient->ProcessRequest();
if (iStatus.Int() == KErrNone)
{
AcceptNextConnectionL();
}
}
void CSocketListener::DoCancel()
{
iListener.CancelAccept();
}
void CSocketListener::StartListeningL(const TDesC& aProtocol, const TSockAddr& aAddr, TInt aQLength)
{
TProtocolDesc desc;
User::LeaveIfError(iServer.FindProtocol(aProtocol, desc));
User::LeaveIfError(iListener.Open( iServer
, desc.iAddrFamily
, desc.iSockType
, desc.iProtocol
));
iListenAddr = aAddr;
User::LeaveIfError(iListener.Bind(iListenAddr));
User::LeaveIfError(iListener.Listen(aQLength));
AcceptNextConnectionL();
}
void CSocketListener::AcceptNextConnectionL()
{
iClient = CHTTPProtocol::NewL();
RSocket& client = iClient->Socket(iServer);
iListener.Accept(client, iStatus);
SetActive();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?