dtsocket.cpp

来自「一个关于通信的源代码」· C++ 代码 · 共 60 行

CPP
60
字号
/*
============================================================================
 Name        : CDTSocket.cpp
 Author      : 
 Version     :
 Copyright   : Your copyright notice
 Description : CDTSocket.cpp - source file
============================================================================
*/

#include "DTSocket.h"

CDTSocket::CDTSocket(TInt aPort)
{
	iPort = aPort;
}

CDTSocket::~CDTSocket()
{
	CleanupStack::PopAndDestroy();
}

CDTSocket* CDTSocket::NewLC(TInt aPort)
{
	CDTSocket* self = new(ELeave) CDTSocket(aPort);
	CleanupStack::PushL(self);
	self->ConstructL();
	return self;
}

void CDTSocket::ConstructL()
{
	TInetAddr addr(KInetAddrLoop, iPort);
	User::LeaveIfError(iSocketServ.Connect());
	CleanupClosePushL(iSocketServ);//if function leaves ensure socket serv session closes
	User::LeaveIfError(iListener.Open(iSocketServ, KAfInet, KSockStream, KProtocolInetTcp));
	User::LeaveIfError(iListener.Bind(addr));  
	User::LeaveIfError(iListener.Listen(1));
}

void CDTSocket::Accept()
{
	TRequestStatus status;
	TSockXfrLength dummyLength;
	iBlank.Open(iSocketServ);
	iListener.Accept(iBlank, status);
	User::WaitForRequest(status);
	if(status != KErrNone) User::Leave(KErrGeneral);
}

TInt CDTSocket::Read(TDes8& aBuffer, TInt aLength)
{
	TRequestStatus status;
	TSockXfrLength dummyLength;
	iBlank.RecvOneOrMore(aBuffer, 0, status, dummyLength);
	aBuffer.SetLength( dummyLength.Length() );
	User::WaitForRequest(status);	
	if(status != KErrNone) User::Leave(KErrGeneral);
	return dummyLength.Length();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?