Hi guys, I'm developing an application with that needs to have a permanent server socket in listening, so I put it in a thread, here there is the class I've written for it:
Code:class listenThread : public wxThread { public: listenThread(MyFrame *h) : wxThread() { handler = h; }; virtual void * Entry(); private: MyFrame *handler; }; void * listenThread::Entry() { handler->sockConvs[nconvs] = handler->sockServer->Accept(); if(handler->sockConvs[handler->nconvs]->IsConnected() && handler->nconvs < 10) { handler->frames[handler->nconvs] = new MyFrame(NULL); handler->frames[handler->nconvs++]->Show(); } }
The class MyFrame handler of Thread:
Code:class MyFrame : public wxFrame { friend class listenThread; public: /* other stuff ... */ private: /* other stuff ... */ private: listenThread *myThread; // Both initialized in MyFrame class constructor wxSocketServer *sockServer; wxIPV4address addr; wxSocketBase *sockConvs[10]; MyFrame *frames[10]; int nconvs; };
Now the problem is that when a client connects to my Application, the listening thread receives this Incoming connection(for each connection, obiviusly, it uses a different SocketBase from sockConvs array) and allocates (as you can see) a new MyFrame.
BUT! at the end of Entry method my new Frame make closed.
Why?
Thank you!



LinkBack URL
About LinkBacks


