MS Visual Basic と Internet Controls

Copyright (c) 1996, by Hirofumi Fujii (藤井啓文)
LastUpdate: 03-Jun-1996

Visual Basic 4.0J に ActiveX の Internet Controls を 組み込んで、非常に短時間で、Internet のアプリケーション プログラムを書くことが可能です。
実例として、daytime client と echo client を作る場合を 考察してみましょう。 Internet Control Pack を組み込むと、Visual Basic の カスタムコントロールとして、Microsoft Winsock Controls が選べるようになります。これを選ぶと、コントロールに TCP と UDP が、付け加わります。

TCP による daytime 取得の手順は
これを Microsoft WinSock Controls の TCP control を使用 する場合、上の手順は具体的には、次のようになります。
Connection の確立

TCP control を使用して Connection を確立する手続きは以下の通り です。 Connection が確立すると、 これにより、connection の確立を知ることができます。
Data の取得

Remote Host から data が送られてくると、 通常ユーザプログラムでは、ここで GetData method を 呼び出し、データを取得します。
注意すべきことは、GetData method にはデータ型の 指定があることです。 daytime の場合、文字列が送られてきますので、データ型と しては vbString を指定します。また、受信バッファの 変数も、variant 型にしておくか、または String 型 にしておく必要があります。
Connection の切断

daytime では remote host から connection を切断します。 これが起こると、 ここで、local 側では Close method を呼び出して、connection を close します。

これだけの処理を行わせるプログラムを実際に書いてみたところ、 プログラミングに要した時間は 30分以下でした。 Visual Programming の威力と言えるでしょう。

では、次に、Echo client を作る場合を考察してみましょう。 この場合、次の二つのことが新たに加わります。
Data の送信

Data を送るには、SendData method を呼び出します。 これにより、 発生します。
筆者がテストしたベータ2では、Winsock controlの 目次の Events には SendComplete Event は出てませんでしたが、 SendProgress Evnet から see also を選ぶことにより、たどり つくことができました。
Local 側からの connection の切断

Local 側から connection を切るには、object_Close を呼び出しますが、これを呼び出した後、TCP control の LocalPort property が元の値のまま残っていることに注意します(少なくとも 私がテストしたベータ2では)。
新たに、connection を張るために、システムに LocalPort の設定を 任せるためには、LocalPort を 0 に戻す必要があります。