📄 dtdaemon.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 + -