Groups > Symbian > Symbian EPOC connect > Sockets ...Help me ????????




Sockets ...Help me ????????

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
about | contact