1

私は自分の telnet クライアントを書きます。そして、私には1つの問題があり、それを解決できません。デバイスに接続し、正常に通信しますが、しばらくするとデバイスが切断されます。

Zoc端末を使用すると、この場合「[TELNET] INFO: DISCONNECTED」と表示されます。

自分の端末を使用していると、このケースを認識できません。TcpClient のプロパティ "Connected" は True です。切断後にストリームに何かを書き込もうとすると、例外が発生します。しかし、これでは遅すぎます。

接続が失われたことをどのように認識できますか?

ありがとう。

4

1 に答える 1

0

Socketの代わりに使ってみてくださいTcpClient。一部の telnet デーモンでは、キーを押すたびにバッファーをフラッシュする必要があるためStream.Flush、関連するストリームで呼び出してみてください。NetworkSteamaをあなたに結びつけ、Socketそれを a で包み、キーを押すたびTextWriterに呼び出すことをお勧めします。Flush

接続が成功して完了し、0 バイトが返さSocketれたことを確認することで、接続が失われたことを認識することができます。Socket.ReceiveAsync同期Socket.Receiveを使用して、スローされた例外を調べることもできます。

于 2013-10-30T15:58:47.190 に答える