TcpChannel クラス
メッセージを送信するために TCP プロトコルを使用する送信者と受信者間のチャネルの実装を提供します。
この型のすべてのメンバの一覧については、TcpChannel メンバ を参照してください。
System.Object
System.Runtime.Remoting.Channels.Tcp.TcpChannel
Public Class TcpChannel
Implements IChannelReceiver, IChannel, IChannelSender
[C#]
public class TcpChannel : IChannelReceiver, IChannel,
IChannelSender
[C++]
public __gc class TcpChannel : public IChannelReceiver, IChannel,
IChannelSender
[JScript]
public class TcpChannel implements IChannelReceiver, IChannel,
IChannelSender
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
TcpChannel クラスは結合されたチャネルです。これは便宜のために TcpServerChannel と TcpClientChannel を結合します。 TcpChannel は、バイナリ フォーマッタを使用して、すべての発信メッセージをバイナリ ストリームにシリアル化し、TCP プロトコルを使用してそのストリームを対象 URI に転送します。着信メッセージでは、処理が逆になります。
チャネルは、アプリケーション ドメイン、プロセス、コンピュータなどのリモート処理境界を超えて、アプリケーション間でメッセージを転送します。このような転送には、着信と発信の両方があります。現在のチャネルは、エンド ポイントで着信メッセージを待機し、発信メッセージをそのエンド ポイントに送信します。 TcpChannel は、通過するメッセージをバイナリ形式との間で変換し、TCP プロトコルを使用してメッセージを送受信します。
クライアント側では、メッセージはクライアント Context チェインを走査した後に、クライアント チャネル シンク チェインに渡されます。通常、最初のチャネル シンクは、メッセージをストリームにシリアル化する IClientFormatterSink です。このストリームは、チャネル シンク チェインからクライアント トランスポート シンクに渡されます。その後、クライアント トランスポート シンクは、このストリームをワイヤに書き込みます。
サーバー側では、サーバー トランスポート シンクは、ワイヤから要求を読み取り、要求ストリームをサーバー チャネル シンク チェインに渡します。このチェインの終端にあるサーバー フォーマッタ シンクは、要求をメッセージに逆シリアル化します。その後、このメッセージをリモート処理インフラストラクチャに渡し、このインフラストラクチャがサーバー Context チェインにディスパッチします。
IChannel 実装は、チャネル構成プロパティを使用して、実行時にチャネルを構成します。チャネル プロパティは、構成ファイルで指定したり、 IDictionary 内でプログラムによって指定したりできます。構成ファイルではすべての値が文字列によって表されますが、 IDictionary プロパティをプログラムによって構築する場合は、値型をネイティブな値または文字列で指定できます。
現在のチャネルに対して指定できるチャネル構成プロパティを次の表に示します。
プロパティ | 説明 |
---|---|
name | チャネルの名前を示します。このプロパティは、 GetChannel を呼び出したときに、指定したチャネルを取得するために使用します。このプロパティが設定されていない場合、システムの既定値は "tcp" になります。複数の TcpChannel を登録する場合は、各チャネルに一意の名前を付ける必要があります。名前を無視するが、名前付け規則に違反しないようにする場合は、このプロパティに Empty 文字列 ("") を設定します。システム上に、名前が String.Empty のチャネルはいくつあってもかまいません。 |
priority | このチャネルに割り当てられている優先順位を表す整数。高い数値は、最初に接続に使用される可能性が高いことを示します。既定の優先順位は 1 で、負の数も指定できます。 |
port | チャネルが待機するポートを指定する整数。空いているポートをリモート システムが自動的に選択するようにするには、ポート "0" を指定します。これによって、動的に割り当てられたポートで要求を待機する TcpServerChannel インスタンスが作成されます。これは通常、 TcpServerChannel がコールバック メソッドを待機していることを確認するために、クライアント側で実行されます。 |
supressChannelData | true または false 。チャネルが ChannelData に関与しないことを指定します。 |
useIpAddress | true または false 。チャネルが、コンピュータ名ではなく、公開 URL の IP アドレスを使用するかどうかを指定します。 |
rejectRemoteRequests | true または false 。他のコンピュータからの要求を拒否するかどうかを指定します。 true を指定すると、ローカル コンピュータからのアプリケーション ドメイン間の呼び出しだけが許可されます。 |
bindTo | 現在のチャネルのバインド先の NIC を指定する現在のコンピュータに解決される IP アドレス。 |
machineName | 現在のチャネルで使用するコンピュータ名を指定する文字列。 useIpAddress 構成プロパティとコンピュータ名のチャネル データをオーバーライドします。 |
exclusiveAddressUse | true または false 。 SocketOptionName サーバー ソケット オプションに SocketOptionName.ExclusiveAddressUse を設定することによって、サーバー チャネルで他のアプリケーションが同じ IP アドレスとポートの組み合わせを使用できないようにするかどうかを指定します。既定値は true です。
このプロパティは、Windows NT 4.0 Service Pack 4 以降、Windows Millennium Edition、Windows 2000、Windows XP Home Edition、Windows XP Professional、Windows Server 2003 ファミリの各プラットフォーム上の .NET Framework Version 1.1 でだけサポートされます。 Windows Server 2003 ファミリ以前のプラットフォームの場合、このプロパティには管理者権限が必要です。 |
必要条件
名前空間: System.Runtime.Remoting.Channels.Tcp
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: System.Runtime.Remoting (System.Runtime.Remoting.dll 内)
参照
TcpChannel メンバ | System.Runtime.Remoting.Channels.Tcp 名前空間 | BinaryFormatter