Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako prepoznati kad se klient diskonektovao?

[es] :: .NET :: Kako prepoznati kad se klient diskonektovao?

[ Pregleda: 1339 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Kako prepoznati kad se klient diskonektovao?23.06.2011. u 14:47 - pre 156 meseci
Imam sledeći kod koji otvara mrezni socket i sluša port 9999. Druga aplikacija se konektuje na ovu, šalje neke komande, ova odgovara i sve to fino radi dok se klijentska aplikacija ne diskonektuje. Tada ova aplikacija ostane u petlji označenoj sa zvjezdicama, odnosno čeka komandu koje nema jer nema ni klijenta.
Moje pitanje je kako da unutar te petlje ispitam da li se klijentska aplikacija otkačila, da bih se mogao vratiti na čekanje nove konekcije sa klijenta (client = socket.Accept())

Code:

public void Listen()
        {
            IPEndPoint ip = new IPEndPoint(IPAddress.Any, 9999);
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            
            string komanda = "";

            Console.WriteLine(ip);
            Console.WriteLine(socket.Blocking);
            Console.WriteLine(socket.IsBound);
        

            socket.Bind(ip);
            socket.Listen(10);
            Console.WriteLine("Waiting for a client...");
            while (true)
            {
                con = false;
                try
                {
                    client = socket.Accept();

                }
                catch (ObjectDisposedException ods)
                {
                    break;
                }
                catch (SocketException se)
                {
                    break;
                }
                con = true;
                
                try
                {
                    clientep = (IPEndPoint)client.RemoteEndPoint;
                    Console.WriteLine("Connected with {0} at port {1}", clientep.Address, clientep.Port);
                }
                catch(Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                byte[] data = new byte[1024];


                while (con)
                {
                    try
                    {
                        data = new byte[1024];
                        int receivedDataLength = client.Receive(data);

                        while (true) // ********************
                        {
    
                            komanda += Encoding.ASCII.GetString(data, 0, receivedDataLength);

                            if (komanda.IndexOf("#") > -1)
                                break;
                            data = new byte[1024];
                            receivedDataLength = client.Receive(data);

            }


                        if ((komanda.Length > 0) && (komanda.IndexOf("send") > -1))
                        {
                            komanda = MainClass.RWfile("R", "");
                        }


                        komanda = "";

                        if (uspori)
                            Thread.Sleep(100);
                    }
                    catch (Exception e)
                    {
            Console.WriteLine(e.Message);
                        con = false;
                    }
                }
                if (open == false)
                    break;
            }

            //Console.WriteLine("Disconnected from {0}", clientep.Address);
            //client.Close();
            //socket.Close();
        }



SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.dynamic.sbb.rs.



+395 Profil

icon Re: Kako prepoznati kad se klient diskonektovao?23.06.2011. u 15:14 - pre 156 meseci
Receive vraca zero bytes lenght ako remote host zatvori socket ili ispaljuje SocketException .

Viva lollapalooza
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Kako prepoznati kad se klient diskonektovao?24.06.2011. u 10:20 - pre 156 meseci
To je to, hvala.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

[es] :: .NET :: Kako prepoznati kad se klient diskonektovao?

[ Pregleda: 1339 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.