⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socketlistener.cpp

📁 一个Symbian平台上的serverclient模型的简单示例
💻 CPP
字号:
// 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -