1

TCP/IPソケットを介して2つの別々のアプリケーションを接続しようとしています。この場合、どちらのアプリケーションも他方の「クライアント」として実行されていないため、相互に通信する必要がある2つの別個のサーバーとして説明する方が簡単です。

データを受信するには、InputStream.Read()関数を使用しています。データの値を受信すると、-1処理を停止する必要があります。ただし、問題は、別のデータセットが到着した場合、InputStreamはすでにストリームの終わり(EOS)にあるため、送信されるすべての新しいデータが破棄または無視されることです。この問題を解決するために私が見つけた唯一の方法は、ストリームの終わりに達したら、ソケットを閉じて再度開くことです。これは、他の方法でより適切に処理できると思います。

InputStreamをリセットして、次のデータセットの準備ができるようにするにはどうすればよいですか?

4

1 に答える 1

4

もう一方の端がソケットの書き込み側を閉じているため、TCP/IP ソケットから読み取るときに EOS を取得しています。これが発生すると、TCP/IP プロトコルは接続を「閉じる」方法を提供しません。

新しい接続を開く必要がない場合は、TCP/IP トランスポート プロトコルの上にアプリケーション プロトコルが必要です。これにより、各論理データセットの終了を示すことができます ... 閉じることはありません。

于 2010-03-22T13:21:51.877 に答える