[ Alisa @ 22.01.2004. 08:41 ] @
zdravo, imam mali problem. Pravim aplikaciju za soket konekciju:
da bi mi serverska aplikacija radila normalno potrebno je da se prije zatvaranja aplikacije server diskonektuje, ali na x on automatski zatvara aplikaciju i server i dalje ostaje u stanju slusanja jer se slusanje vrsi u posebnoj niti programa. Dodala sam events na x da mi izbaci messagebox sa porukom da se treba prvo diskonektovati. Kad ti kliknes na x on izbaci taj messagebox i ti kliknes na OK i on odmah zatvori

Code:

if (serverStart==true)
    {
        MessageBox::Show(S"Ne mozes zatvoriti aplikaciju dok se ne diskonektujes", S"Upozorenje");
    }
    //else
    //    this->Close();


na ovo mi on blokira kad je serverStart==false, a kad je true, on izbaci messagebox i zatvori aplikaciju na OK.
[ Dragi Tata @ 22.01.2004. 17:39 ] @
Citat:
Alisa:
Pravim aplikaciju za soket konekciju:
da bi mi serverska aplikacija radila normalno potrebno je da se prije zatvaranja aplikacije server diskonektuje, ali na x on automatski zatvara aplikaciju i server i dalje ostaje u stanju slusanja jer se slusanje vrsi u posebnoj niti programa.


Hoćeš da kažeš da "server" nit nastavlja da živi i pošto je proces završen? Apsolutno nemoguće.
[ yooyo @ 22.01.2004. 23:40 ] @
Iskoristi destructor.... Kada se zatvara program, obicno se pozivaju
i destruktori, a to je bas zgodno mesto da se pozatvaraju konekcije. :)


yooyo

[ Alisa @ 23.01.2004. 14:16 ] @
E rjesila sam to na skroz drugi nacin, ali dobra ti je ideja za destruktor.



Hoćeš da kažeš da "server" nit nastavlja da živi i pošto je proces završen? Apsolutno nemoguće.


E nije nemoguce,jer kad sam samo zatvarala aplikaciju i ponovo je pokretala on mi je javljao gresku da je to vec pokrenutu i inda sam ga morala u TaskManager-u nasilu zatvarati.
[ Dragi Tata @ 23.01.2004. 15:53 ] @
Pa kad si ga zatvarala u Task Manageru, to znači da nije ni bio zatvoren. Inače, kad se proces zatvori, sa njim odu i sve niti.
[ Milos Babic @ 08.02.2004. 11:20 ] @
Postoji verovatnoca da adresi, iako je oslobodjena (zatvorila si proces), status nije azuriran
u kernelu.
Ovako se to resava u C-u pod Linuxom.

Code:

        koristi = 1;
        setsockopt(server, SOL_SOCKET, SO_REUSEADDR, &koristi, sizeof(int)) 


gde je 'server' deskriptor soketa na kome server prihvata konekcije.

[ Mikky @ 08.02.2004. 21:28 ] @
Citat:
Dragi Tata:
Hoćeš da kažeš da "server" nit nastavlja da živi i pošto je proces završen? Apsolutno nemoguće.


Hm.. a CreateRemoteThread? :)
[ Dragi Tata @ 09.02.2004. 03:30 ] @
@Milos Babic: Pitanje se odnosilo na Windows, a tamo tako nešto ne može da se desi.

@Mikky: Dobar štos ;)