【TCP/UDP通信アプリケーションの作り方】
WindowsのVisual Basic 6.0をベースにして、TCPやUDP通信でのアプリケーションを
作る時には、次のようにします。
Visual Basic 6.0で、UDP通信あるいはTCP通信でデータ通信を行うアプリケーションを
簡単に作るときには、「Winsockコントロール」を使います。
このWinsockコントロールは、VB6のプロフェッショナルエディション以上で使うことが
できるようになっています。
【Winsockコントロールとは?】
Winsock コントロールは、TCP やUDPプロトコルを使ったネットワーク通信のアプリを
簡単に作る機能を提供するコンポーネントです。
これらのアプリケーションプログラムを作るときに、TCP の詳細を理解したり、低水準の
Winsock API を呼び出したりしなくても、このWinsockコントロールの各種プロパティを
設定し、メソッドを呼び出すだけで、簡単にリモート マシンに接続し、送受信両方向の
データ通信を行うことができるようにしてくれます。
Winsockコントロールの主なプロパティとメソッドには、下表のようなものが用意されています。
No 名称 機能内容と記述方法 備考 1 Protocol
プロパティWinsockとして使うプロトコルの指定
UDPかTCPかを指定する。
<書式>
object.Protocol [=protocol]
<protocolの値>
sckTCPProtocol
sckUDPProtocolobjectはWinsockの
オブジェクト名2 LocalPort
プロパティ送信するポート番号の指定
<書式>
object.LocalPort = long
<longの値>
汎用ポートである10000から17000
の間の任意の定数3 RemoteHost
プロパティ通信する相手のアドレス指定
<書式>
object.RemoteHost = string
<stringの値>
コンピュータ名またはIPアドレス
IPアドレスの例
192.168.1.34 RemotePort
プロパティ送信する相手のポート番号の指定
<書式>
object.RemotePort = port
<portの値>
汎用ポートである10000から17000
の間の任意の定数5 DataArraival
イベント受信のイベント発生
<書式>
object_DataArrival (bytesTotal As Long)bytesTotal As Long
には取得できる最大
データサイズが渡される6 SendData
メソッドPC側から送信する
<書式>
object.SendData data
<dataの値>
送信するデータ、文字列かバイト配列
バイナリデータ送信の
時はバイナリ配列で
指定する7 Bind
メソッドUDPの時、受信するLocalPortを指定します。
<書式>
object.Bind LocalPort, LocalIP
<LocalPortの値>
受信するPC側のポート番号
<LocalIPの値>
受信するPC側のIPアドレス
RemoteHostで指定していれば省略可能8 GetData
メソッド受信したデータを取り出す
<書式>
object.GetData data[, type[, maxLen] ]
<data>
取得データの格納バッファの指定
<type>
取得するデータの型指定、省略可能
<maxLen>
バイト配列または文字列の場合に
取得するデータ個数を指定、省略可能9 Close
メソッドソケットを閉じます
<書式>
object.Close
【Winsockコントロールの準備】
まずVB6でWinsockコントロールが使えるようにします。 通常の起動状態では
Winsockコンポーネントはツールボックスには無いので、下記のようにして追加します。
まず、VB6を起動し、新規作成の標準EXE作成でフォーム作成状態にしてから、
プロジェクト → コンポーネント とすれば下記コンポーネント選択ダイアログが
開きますので、ここで「Microsoft Winsock Control」を選択して追加します。
あとはツールボックスのWinsockコントロールをフォームに貼り付ければWinsockが
使える状態になります。
【Winsockコンポーネントをフォームへ】
上記で追加するとツールボックスには下図のようにWinsockのアイコンが追加され
ます。 このアイコンをドラッグしてフォームに貼り付けると、やはり下図のような
アイコンとなって表示されます。
このWinsockコントロールのアイコンは実行中は見えなくなりますので、フォーム上の
どこに貼り付けても構いません。