Kolejne moje pytanie o mfc. Tym razem o watki.
Wiec jest tak:
W serwerze tworze watek ktory nasluchuje na zgloszenia klientow (logowanie). To mi dziala. TO jest watek z intefrejsem uzytkownika (klasa wyprowadzona z CWinThread).
Metoda tej klasy ktora nasluchuje (zrobilem to w InitInstace()) wyglada tak:
if (!hosts.Create(4000)){
return false;
}
if (!hosts.Listen()){
return false;
}
CMySocket *soc; // klasa wyprowadzona z CSocket, z przeslonieta metoda OnReceive()
CKlientKom *p; // klasa ktorej chce uzyc do 'obslugi' klientow
while(1){
soc=new CMySocket;
while (!hosts.Accept(*soc) && !hosts.GetLastError() ) ;
AfxMessageBox("klient połaczony");
gniazda.AddTail(soc);
p = (CKlientKom*)AfxBeginThread(RUNTIME_CLASS(CKlientKom),0,0,CREATE_SUSPENDED);
p->SetSoc(soc); // tak robie aby przekazac do obiektu CKlientKom gniazdo, ktore powiazany jest klient
p->ResumeThread();
}
Watek startuje, problemem jest to ze gdy cos wysle z klienta, to gniazdo na serwerze nie regauje (nie wywoluje metody OnReceive() )
Nie wiem gdzie tu moze byc blad, moze zle podaje gniazdo do obiektu CKlientKom..
aha metoda SetSoc() wyglada tak:
SetSoc(CMySocket pArg)
{
sock=pArg; //socket jest typu CMySocket
}