Problemet er, at Poll (tror jeg) skriver nogle bytes vha. socket.write();, MEN hvis jeg samtidig er i gang med at skrive bytes til klienten via NetworkStream, trangsafbryder den forbindelsen.
Jeg har prøvet med en lock(this) { } på Poll og den anden Write, men uden held.
Nogen der har en løsning på ovenstående problemstilling, eller en anden metode til at finde ud af, om en socket stadig er aktiv?
hvis TCP og du kan sende uden exceptions, så er din socket jo per definition aktiv. og så lad være med at polle så længe det er tilfælde.
hvis UDP implementer det således at du kan stop/pause -> Poll -> Start/Fortsæt...
Men en anden ting, hvis din klient disconnecter på en "forkert" måde, fx at programmet går uvilligt ned... så kan du ifl. dokumentationen ikke bruge Poll.
This method cannot detect certain kinds of connection problems, such as a broken network cable, or that the remote host was shut down ungracefully. You must attempt to send or receive data to detect these kinds of errors.
Ja altså når det så er TCP, så behøber du kun Pinge når du ikke bruger din socket, for i andre tilfælde så er den aktiv. og hvis klienten skulle afslutte uventet, så vil du få en exception i og med det er Connection Oriented.
Når du så bare har en Idle Connection, så er det simpelthen at lave en form for ping pakke, denne skal clienten jo så forstå således at den kan smide den ud.
Og det er IMO det nemmeste at gøre, for selv om du måske kan få at vide at clienten er disconected via Poll hvis det sker ordenligt på hans side. så vil fejl scenarierne bare kræve at man stadig gør det andet. (Ifl dokummentationen hvertfald)...
Det næste spørgsmål er så hvad der sker når en Klient lukker ordenligt ned, så vil man stadig få en exception når man vil sende, men spørgsmålet er om den er sigende nok til at sige om det var grundet en netværksfejl/programfejl. eller om klienten disconnectede rigtigt. (det vil jo være rart at kunne fortælle at en klient Disconnectede "lovligt", eller om han bare pluselig forsvandt)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.