VB.net では、TcpClient を使用してデータの文字列を取得しています。クライアントが接続されているかどうかを確認するために .Connected プロパティを常にチェックしていますが、クライアントが切断されても true を返します。この問題の回避策として何を使用できますか?
これは私の現在のコードの簡素化されたバージョンです:
Dim client as TcpClient = Nothing
client = listener.AcceptTcpClient
do while client.connected = true
dim stream as networkStream = client.GetStream()
dim bytes(1024) as byte
dim numCharRead as integer = stream.Read(bytes,0,bytes.length)
dim strRead as string = System.Text.Encoding.ASCII.GetString(bytes,0,i)
loop
クライアントが切断された場合、少なくとも GetStream() 呼び出しは例外をスローすると考えていましたが、他のアプリを閉じましたが、まだそうではありません...
ありがとう。
編集 Client.Available のポーリングが提案されましたが、問題は解決しません。クライアントが「実際に」接続されていない場合、利用可能なものは 0 を返します。
重要なのは、接続を開いたままにし、同じソケット接続でデータを複数回受信できるようにすることです。