CSocket, best way to wait for a reply?



Hi,

I have a 'client' and a 'server', (both the same sub-classes of CSocket).
Basically the client sends a message to the server and in turn the server
sends a message back to the client.
I allow a few seconds for the server to reply back to the client. Ideally it
should not take more than a few milliseconds.
The client waits for it's reply, (recognized by a special header in the
message).

So what I have is a function that does something like...

void MyMessage( void *pData, int nSize )
{
pMySocket->Send( pData, nSize );

// wait for a reply from the server
while( pMySocket->pReplyBuffer == NULL ){
sleep(0); // give time back to the queue
// wait for a few seconds only
}

// either timeout or no reply sent
}

// The server then receives the message sent
// sends a reply back to the client
// who in turn fills the void *pReplyBuffer
//
// once "pReplyBuffer" is no longer NULL I know that data has returned.

But I have 2 problems

1) As you can see the wait is totally inadequate. it hangs the system. So
what would be the best way to wait for a few seconds?
What I am doing now is ::PeekMessage( &msg, 0, 0, PR_REMOVE), but I don't
feel good handling ALL the messages that way.
PeekMessages only for socket ones does not seem to work and still causes the
system to hang.

2) Sometimes the Send(..) -> (who then calls the SendChunk() function),
simply hangs and waits forever for the PumpMessages(FD_WRITE) to return.
What could I be doing wrong.

Many thanks

Simon


.



Relevant Pages

  • Re: What doesnt lend itself to OO?
    ... >> proxy and instructs the server to constuct the real object. ... rather than client code. ... If 'clock' is instantiated in the server, ... > for the server interface at the OOA level. ...
    (comp.object)
  • This is going straight to the pool room
    ... or not the client has privilege to do what they're trying to do, ... The server environment is this: ... 3GL User action Routines that Tier3 will execute on your behalf during the ... Routine Name: USER_INIT ...
    (comp.os.vms)
  • [Full-Disclosure] R: Full-Disclosure Digest, Vol 3, Issue 42
    ... Full-Disclosure Digest, Vol 3, Issue 42 ... SD Server 4.0.70 Directory Traversal Bug ... Arkeia Network Backup Client Remote Access ...
    (Full-Disclosure)
  • Re: What doesnt lend itself to OO?
    ... > rather than client code. ... no way to do that without also touching the object with clock semantics ... will not encapsulate both clock semantics and network semantics. ... The server can do whatever it wants ...
    (comp.object)
  • RE: Fax monitor incoming + outgoing calls?
    ... problem between the client computer and the SBS server. ... Client is using the internal IP address of the SBS server as the ... To the folder redirection GPO issue: ...
    (microsoft.public.windows.server.sbs)