[ fanfani @ 22.05.2002. 22:02 ] @
Pokusavam da napravim jedan port internet skener u Visual C++-u ( MFC ),ali mi ne ide.Program bi trebao da uzima iz fajla po jedan ip i da skenira,ali on blokira,zbog toga sto to nije multithread aplikacija(bar sam procito na netu).E sad kako da rjesim ovaj problem kako da funkcije winsocka,kao sto su gethostbyname,connect..., uvrstim u poseban thread.
Hvala
[ leka @ 23.05.2002. 14:18 ] @
Uopste ti ne treba multithread aplikacija za to sto hoces... Tvoj port scanner treba da skenira sukcesivno portove i to je poprilicno prosta stvar. Program ti 101% puca na nekom mestu gde si napravio gresku. Prodji jos par puta kroz kod i nacices je.

Sa druge strane, ako na NET-u od necega ima dosta sorsa (gotovog) to je za port scanner-e ! Znaci pitaj Google-a, on sve zna! :)
[ Dragi Tata @ 23.05.2002. 17:12 ] @
Evo primera za port scanner-e:

http://www.codeproject.com/inf...canner%22&st=tt&qm=all

Ne znam da li su multithreaded. Inače, koliko sam razumeo čoveka, njemu program ne puca, već mu predugo "skeniranje" portova blokira aplikaciju, a za to multithreading zaista može biti rešenje. Mada, ako nema iskustva sa višenitnim programiranjem, savetujem mu da se ne upušta u to (osim učenja radi) i da koristi npr OnIdle funkciju.
[ leka @ 23.05.2002. 18:03 ] @
Ma mozda cak kapiram zasto mu se desava da mu se aplikacija blokira... U BC++B postoji Application->ProcessMessages() metod koji osvezi sve, malo pusti sistem da "dane dusom" (a i ostale procese) i onda nastavi sa radom. Verovatno taj metod poziva naku API funkciju. Ovo sve govorim cisto kao ideja kako da covek malo poboljsa rad svoje aplikacije... Ja ne verujem da vise niti mogu da pomognu ovde nesto specijalno.
[ bm101 @ 24.05.2002. 07:27 ] @
Poz svima!

Koliko sam razumeo ti koristiš MFC i verovatno CSocket klasu koja blokira program prilikom poziva bilo kojeg metoda. Nije ti potrebno da praviš multithread app, dovoljno ti je da koristiš CAsyncSocket i to ce ti resiti problem blokiranja.

Potrebno je da u svaki od dogadjaja koji te zanima, a posto praviš port scanner, OnConnect ubacis kod koji proverava da li je sve prošlo OK (param. nErrorCode čini mi se)...