2015-10-16 11 views
6

をストリームを読み書きSO上ですでにここ数回尋ねましたが、単一のスレッドは、我々は現時点で直面しているものとまったく同じ問題を扱っていません。C#れるtcpClientは、私はこのちょっと質問を知っていると同時に

私たちは、基本的にサーバーはJavaで書かれており、クライアントは、C#で書かれているTCPサーバ/クライアントアプリケーション、に取り組んでいます。 私はJava Sideにいます。私はバッファに別々の入出力ストリームを使用しています。

私たちの問題は、クライアントがサーバからメッセージを受信し、それらのメッセージはバッファを非同期で例外がスローされ、そのプロセスの間にそれに何かを書き込もうと読み取った場合 - 驚き。

私の質問は次のとおりです。このシナリオにはどのような方法がありますか?分離ストリームを作成しますか?私たちはすでにそれを試しましたが、C#は私たちが望んでいないようでした。私たちはここで解決策が切望されており、どんな助けも大歓迎です!

+0

基本的には、C#で同時に読み書きするソリューションが必要ですか? Java側が動作していますか? –

+0

うん、それは働いている。私たちはちょうどこの問題を解決しましたが、Cでストリームを分離する方法があるかどうかを知りたいと思っています# – Psylution

答えて

7

いいえ、うまくいくはずです。必要なものはTcpClientです。既に持っているでしょう。そこから、を返すTcpClient.GetStream()から。次に、読み書き操作は、同期を必要とせずに同時に/同時に実行できます。したがって、読み書きは同じ時間に発生する可能性があります。

何を同期させる必要があるかは、複数の同時読み取りです。すべての同時読み取りはlock(objReads)で同期させる必要があります。

は同様に、複数の同時書き込みはlock(objWrites)で同期化する必要があります。それが保証されていることを

MSDN says、。

私は読み取りと書き込みが別のロックを持っている、それは明らかにされていることに注意してください。

+0

私たちはすでにそれを解決しました。問題は私たちの側にありました。今私は、分離されたストリームを必要としないことも知っています。 – Psylution

+0

@ neil-patrao答えを改善していただきありがとうございます:)。 – ipavlu

関連する問題