このページは、2019年3月に保存されたアーカイブです。最新の内容ではない場合がありますのでご注意ください
(C++Builder5)
●TNMUDPコンポーネントで受信ポート番号を動的に指定する
◆解説
例えば、UDPによる通信における受信ポート番号を、設定ファイルから取得して設定したいとする。
C++Builderの仕様として、TNMUDPコンポーネントではLocalPortの指定ができるのは設計時のみである。
設計時とは、コンパイルする前に「オブジェクトインスペクタ」のプロパティで「LocalPort」に値を入力しておくという意味である。
これを、TNMUDPをプログラムの中で動的に生成するようにすると、LocalPortの指定が一度だけできる。
こうすることで、受信ポート番号をプログラム中で設定することが可能になる。
なお、送信ポート番号であるRemotePortは何度でも動的に設定できる。
◆重要な注意点
・TNMUDPなどのコンポーネントを複数使用している場合
指定したポート番号が、既に他コンポーネントのLocalPortやRemotePortで指定されていると、動作しない。
コンポーネントのLocalPortやRemotePortが実際に使用されているかどうかにかかわらない。
重複しているポート番号は、別の番号に変えてやる必要がある。
◆プログラム例
フィールドの作成
ヘッダファイル内に変数宣言を記述する。
TNMUDP* udp;
クラスエクスプローラを使用すると良い。
クラスエクスプローラで「フィールドの作成」を選択する。
型を「TNMUDP*」とし、変数名を「udp」などとして作成する。
TNMUDPの生成を記述
udp = new TNMUDP(NULL); udp->LocalPort = 3001; // 受信ポート番号(例) udp->OnDataReceived = (受信したときに呼ばれる関数名);
上記のほか、必要なプロパティを記述する。
TNMUDPの削除を記述
newの時に引数をNULLとした場合は、作成されたインスタンスを(Ownerの状態にかかわらず)
自前の実装でdeleteする必要がある。
delete udp;
newの時に引数がNULLでない場合は、OwnerがdeleteされるとOwnerを指定したものも自動でdeleteされるので、実装する必要はない。
インクルード
TNMUDPコンポーネントを使用するには、下記のようなインクルードが必要である。
#include
このページは、2019年3月に保存されたアーカイブです。最新の内容ではない場合がありますのでご注意ください