|
| Sockets ...Help me ???????? |
 |
Sat, 22 Jul 2006 12:07:08 +053 |
#include"ServerEngine.h"
#include"ClientEngine.h"
#include"ServerRead.h"
#include"ClientSend.h"
#include"ClientRecv.h"
CServerEngine * CServerEngine::NewL()
{
CServerEngine* self = CServerEngine::NewLC();
CleanupStack::Pop(self);
return self;
}
CServerEngine* CServerEngine::NewLC()
{
CServerEngine* self = new (ELeave) CServerEngine;
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CServerEngine::CServerEngine():CActive(EPriorityStandard)
{
}
CServerEngine::~CServerEngine()
{
Cancel();
delete iEngine;
iEngine=NULL;
//iSocket.Close();
// iServerSession.Close();
}
void CServerEngine::ConstructL()
{
CActiveScheduler::Add(this);
iServerSession.Connect();
iLSockAddr.SetAddress(KInetAddrAny);
iLSockAddr.SetPort(9393);
iListeningSocket.Open(iServerSession,KAfInet,KSockStream,KProtocolInetTcp);
iListeningSocket.Bind(iLSockAddr);
iListeningSocket.Listen(6);
iSocket.Open(iServerSession);
iEngine=CClientEngine ::NewL();
iEngine->ConnectClientL(); // here i'm connecting this to port 8080 (
VC++ Server)
}
void CServerEngine::ConnectServerL()
{
iListeningSocket.Accept(iSocket,iStatus);
SetActive();
}
void CServerEngine::RunL()
{
if (iStatus == KErrNone)
{
switch(iCommState)
{
case EReceiveHttp:
{
iCommState=ESendToAxelera;
HBuffer1 = ReceiveRequestL();
SetActive();
break;
}
case ESendToAxelera: // Sending to VC++ Server
{
iCommState=EAxeleraResponse;
SendMessageL(HBuffer1);
SetActive();
break;
}
case EAxeleraResponse: // Response From VC++ Server
{
iCommState=ESendToBrowser;
RecvMessageL();
SetActive();
break;
}
case ESendToBrowser: // Sending Response From VC++
Server To Browser....
if(iStatus == KErrNone)
{
iCommState=EOver;
fs.Write(str);
HBuffer2 =str.AllocL();
SendToBrowserL(HBuffer2);
SetActive();
break;
}
// again i want to take the request from Browser & send to VC++ &
then
receive response from VC++ & send to browser & then receive request from
Browser......then it shld continue like a loop .....give me some ideas to
make it plz...... for each time to all those i need more sockets to be
generated....how to code that....tell me.....
case EOver: // i hope this EOVER code is wrong ....how to
code ??????
{
iCommState=EReceiveHttp;
iSocket.Close();
iServerSession.Close();
// SetActive();
break;
}
}
}
}
void CServerEngine :: DoCancel()
{
iListeningSocket.CancelAccept();
iSocket.CancelRecv();
iEngine->iSocket.CancelSend();
iEngine->iSocket.CancelRecv();
iSocket.CancelSend();
}
HBufC8* CServerEngine::ReceiveRequestL() // Receving Request
from Browser....
{
fsSession.Connect();
_LIT(KFileName,"c:\\nokia\\file4.txt");
fs.Replace(fsSession,KFileName,EFileWrite);
iSocket.RecvOneOrMore(iBuffer,0,iStatus,iLen);
fs.Write(iBuffer);
HServerReadBuffer = iBuffer.AllocL();
return HServerReadBuffer;
//flag=1;
}
void CServerEngine::SendMessageL(HBufC8* buf) // sending to VC++
Server
{
iEngine->iSocket.Send(*buf,0,iStatus);
}
void CServerEngine::RecvMessageL() // receiving
response from VC++ Server
{
fsSession.Connect();
_LIT(KFileName,"c:\\nokia\\file5.txt");
fs.Replace(fsSession,KFileName,EFileWrite);
iEngine->iSocket.RecvOneOrMore(str,0,iStatus,iLen);
// User::WaitForRequest(iStatus);
// return HAxelera;
}
void CServerEngine::SendToBrowserL(HBufC8* buffer) // sending to
browser...
{
iSocket.Send(*buffer,0,iStatus);
// User::WaitForRequest(iStatus);
}
|
| Post Reply
|
|
|
|
|
|
|
|
|
|