2011-07-29 22 views
0

私はPLC(プログラマブルロジックコントローラ)と通信するために以下のイーサネットネットワークを持っています。 1つのイーサネットケーブルがPCからイーサネットスイッチに送られ、複数のケーブルがスイッチから並行してPLCに送られます。すべてのPLCモジュールには異なるIPアドレスがあり、TCP接続を使用してそれらと通信したいと思います。
コードでは、各モジュールのTCPClientオブジェクトを作成し、IPを渡してデータを送信する前に接続します。私はモジュールごとに個別のスレッドを作成したいし、各スレッドはTcpClient.GetStream()を使ってそのモジュールにデータを送信します。 GetStreamが各スレッドから呼び出されたとき(同じPCからケーブルが1つしかないため)同じスレッドオブジェクトを取得しようとしていますか、スレッドごとに異なるStreamオブジェクトがありますか?それらが異なる場合、Streamオブジェクトは共有リソースではないため、スレッド間で同期する必要はありません。それが事実ならば、私は、1つのケーブルが外に出ているので、.netは異なるStream.Writeコール間の同期を行うと仮定します。これは本当ですか?テーマに関する追加情報とリンクは大歓迎です。ストリーム1つのイーサネットケーブルでマルチスレッド化

答えて

1

異なるTcpClientオブジェクト、したがって異なるストリーム。同期は必要ありません。 1つのケーブルを介して複数のTCP接続を多重化することは、オペレーティングシステムに組み込まれているTCP/IPドライバスタックの仕事です。必要はありません。