Καταρχήν χαιρετώ άπαντες, καθώς είναι η πρώτη φορά που γράφω στο φόρουμ.
Τις τελευταιες μερες γράφω μια Client-Server εφαρμογή σε C# και χρειάζομαι τη βοήθειά σας.
Το πρόβλημά μου είναι το εξής: Προσπαθώ να βρω ένα τρόπο να διαπιστώσω αν η εφαρμογή στην άλλη
άκρη έχει 'πεθάνει' ή απλά έχει κάνει disconnect. Μιλάω για επικοινωνία πάνω από Tcp Connection.
Καταρχήν το Socket δεν διαθέτει κάποιο ανάλογο event ώστε να ενημερώσει ότι κάτι τρέχει. To Connected
property του παραμένει true ακόμα και αν έχει τερματιστεί η εφαρμογή-cliεnt. Το ίδιο συμβαίνει και με το
NetworkStream που παίρνω από τον αντίστοιχο TcpClient, στο οποίο αν καλέσω τη μέθοδο ReadByte()
παίρνω πίσω -1. Δοκίμασα να κάνω Poll για SelectError & SelectWrite στο socket αλλά πάλι no luck. Το να
κάνω Poll για SelectRead δεν έχει νόημα, καθώς σύμφωνα με το documentation, θα επιστρέψει:
"
Mode |
Return Value |
SelectRead
|
true if Listen has been
called and a connection is pending;
-or-
true if data is available for reading;
-or-
true if the connection has been closed, reset, or terminated;
otherwise, returns false. |
"
Για να μην μακρυγορώ, υπάρχει κάποιος τρόπος να γίνει αυτό που προσπαθώ?