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

📄 dtdaemon.cpp

📁 一个关于通信的源代码
💻 CPP
字号:
/*
============================================================================
Name        : DTDaemon.cpp
Author      : 
Version     :
Copyright   : Your copyright notice
Description : Exe source file
============================================================================
*/

//  Include Files  

#include "DTDaemon.h"
#include "DTDaemonInst.h"
#include <libc\sys\unistd.h>
#include "DTFile.h"
#include "DTSocket.h"


#ifdef _CONSOLE
//  Constants

_LIT(KTextConsoleTitle, "Console");
_LIT(KTextFailed, " failed, leave code = %d");
_LIT(KTextPressAnyKey, " [press any key]\n");

// define global console 
CConsoleBase* console;
#endif

//  Local Functions

LOCAL_C void ProcessFind(TDes8* aBuffer)
{
	TBuf<256> res;
	aBuffer->Zero();
	//Get only the first five processes, otherwise it goes on for ages!
	bool blFind = false;
	TFindProcess findP;
	for(;;)
	{
		findP.Find( _L("*appinst*") );
		if( findP.Next(res) == KErrNotFound ) break;
		sleep(1);
	}
}

LOCAL_C void MainL(const TDesC& aArgs)
{
	//
	// add your program code here, example code below
	//
	TBuf8<256> buffer;
	CDTDaemonApp* dtapp = new(ELeave) CDTDaemonApp();
	CleanupStack::PushL(dtapp);
	ProcessFind(&buffer);
	dtapp->StartSetup();
	CleanupStack::PopAndDestroy(dtapp);
}


LOCAL_C void DoStartL()
{
	// Create active scheduler (to run active objects)
	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
	CleanupStack::PushL(scheduler);
	CActiveScheduler::Install(scheduler);

	// Call main function with command line
	TBuf<256> cmdLine;
	//RProcess().CommandLine(cmdLine);
	MainL(cmdLine);

	// Delete active scheduler
	CleanupStack::PopAndDestroy(scheduler);
}

LOCAL_C void DoStartSocketL()
{
	CDTSocket* cSocket = CDTSocket::NewLC(10000);
	PRINT(_L("new finished\n"));
	cSocket->Accept();
	PRINT(_L("ready for accept\n"));
	TBuf8<1024> tb;
	TInt len = cSocket->Read(tb, 1024);
	tb.SetLength(len);
	PRINT(_L("read finished\n"));
	if( len > 0 )
	{
		HBufC* p = CnvUtfConverter::ConvertToUnicodeFromUtf8L(tb);
		PRINT(_L("len=%d, data=%s\n"), len, p->Des());
		delete p;
	}
	CleanupStack::PopAndDestroy(cSocket);
	User::After(10000000);
}

LOCAL_C void DoStartFileL()
{
	CDTFile* cFile = CDTFile::NewLC();
	cFile->OpenForWrite(_L("c:\\1.txt"));
	TBuf8<1000> wb;
	wb.Append(_L8("hello gene"));
	cFile->Write(wb,wb.Length());
	cFile->Close();
	User::LeaveIfError(cFile->OpenForRead(_L("c:\\1.txt")));
	TBuf8<160> tb;
	TInt len = cFile->GetLength();
	int readlen = 0;
	int readoncelen = 0;
	while( readlen < len )
	{
		//tb.Delete( 0, tb.Length() );
		readoncelen = cFile->Read( tb, tb.MaxLength() );
		tb.SetLength(readoncelen);
		readlen += readoncelen;

		HBufC* p = CnvUtfConverter::ConvertToUnicodeFromUtf8L(tb);
		PRINT( p->Des() );
		delete p;
		User::After( 1000000 );
	}
	CleanupStack::PopAndDestroy(cFile);
}


//  Global Functions

GLDEF_C TInt E32Main()
{
	// Create cleanup stack
	__UHEAP_MARK;
	CTrapCleanup* cleanup = CTrapCleanup::New();

#if _CONSOLE
    // Create output console
    TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(KConsFullScreen, KConsFullScreen)));
    if (createError)
        return createError;
#endif


	// Run application code inside TRAP harness, wait keypress when terminated
	//TRAPD(mainError, DoStartL());
	//TRAPD(mainError, DoStartFileL());
	TRAPD(mainError, DoStartSocketL());	

#if _CONSOLE
	GETCH;
	//delete console;
    delete console;
#endif
	delete cleanup;
	__UHEAP_MARKEND;
	return KErrNone;
}



⌨️ 快捷键说明

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