|
Murran pead ühe probleemi kallal, millele lahendust hästi ei leia. Mu programm loob TCP/IP ühenduse teatud aadressiga, et kuulata sellelt saabuvaid teatud laadi andmeid. Aeg-ajalt katkestab serveripool ühenduse ära, siis tuleb sinna uuesti ühenduda. Esimene probleem on selles, et kui server katkestab ühenduse, siis sokkel ei kaota oma "connected" omadust, kuigi andmeid enam ei saabu. Kui ma püüan porti kirjutada, siis tekib ühenduse katkestusviga otsekohe. Teine probleem on selles, et kui püüan soklit uuesti ühendada, siis see enam selle programmi käivitamise ajal ei õnnestu. Kasutan ühendamiseks sellist koodi (ei ole täielik):
Siin on kood, millega kontrollin sokli ühendatust:
|
|
Üldiselt sokkli ühendatuse testimine on üldiselt üsnagi ebausaldusväärne. Parem viis on midagi proovida kirjutada ja/või lugeda. vastav teema stackoverflows socket.Disconnect(true); Tagasi ühendamiseks võid proovida eelnevalt teha:
ja siis proovida ühendada. Suur tänu, see töötas, ning lahendas korraga mõlemad probleemid: sulges ühenduse korralikult siis, kui "connected" veel aktiivne oli, ning taastas ühenduse "disconnected" olekus.
(Dec 01 '09 at 09:06)
Teet
|
|
kas TCP Keepalivest ei piisa? Kui serveri pool katkestab aeg-ajalt jõuga ühenduse, siis sellest ei piisa. Ma ei saa ehitada programmi, mille peab kinni panema ja uuesti käivitama, kui see ei ole enam suuteline oma katkise sokliga midagi peale hakkama.
(Jan 31 '10 at 23:34)
Teet
seda just keepalive tagama peakski - katkise ühenduse (nagu näiteks jõuga suletud ühendus voolukatkestuse tõttu) tuvastama. Võid ka kõrgema taseme protokolli sarnase asja teha, nagu IRC protokolli puhul ping-pong näiteks on.
(Feb 03 '10 at 11:01)
madis
|

Tundub, et natuke raske probleem sai...