TCPプロトコルでの使い方(PC側)


【TCP通信アプリケーションの作り方】

WindowsのVisual Basic 6.0をベースにして、TCP通信での簡単なアプリケーションを
作ります。

ここで作るPC側のTCPアプリケーションは下表のような仕様になっているものとします。
デバイス側の仕様は前のページを参照して下さい。

PC側の仕様
No 機 能 使用ポート 機 能 内 容
データ送信
と受信
Local   12001
Remote 10001
接続1ボタンを押すと左記のポート間でコネクションを確立
します。
そして送信1ボタンを押すと、一定時間間隔でCounterの値
を文字列に変換してTCPで送信し、折り返しのデバイスからの
送信データを受信してテキストボックスに表示します。
そしてCounterを+1して次の送信を行います。

デバイス側ではCounterの値を液晶表示器に表示し、
同時に、PC側からの送信データの応答として固定文字列
データを送信するものとし、自ら送信することは無いもの
とします。
2 データ送信 Local   12002
Remote 10002
接続2ボタンを押すと左記のポート間でコネクションを確立
します。
送信2ボタンを押すと、そのときText2ボックスに入力されて
いるテキストデータをTCPで送信します。
デバイス側では受信した文字列データを液晶表示器に表示
します。
データ送信 Local   12003
Remote 10003
接続3ボタンを押すと左記のポート間でコネクションを確立
します。
送信3ボタンを押すと、そのときText3ボックスに入力されて
いるテキストデータをTCPで送信します。

デバイス側では受信した文字列データを液晶表示器に表示
します。
データ送信 Local   12004
Remote 10004
接続4ボタンを押すと左記のポート間でコネクションを確立
します。
送信4ボタンを押すと、そのときText4ボックスに入力されて
いるテキストデータをTCPで送信します。

デバイス側では受信した文字列データを液晶表示器に表示
します。
3 終 了   終了ボタンを押したらWinsock、Timerコントロールを
クローズし、アプリケーションを終了、フォームを閉じる。
デバイス側もTCPコネクションを終了します。
その他 RemoteIPアドレス
Timer Interval
192.168.1.3
初期設定 10msec


【TCP通信でのWinsockの使い方】

Winsockコントロールを使って、TCP通信をするアプリを作るときの基本のパターンは
UDPの場合とほぼ同様で下記のようにします。送信と受信で少し手順が異なります。


《データを送信する場合》

(1) プロトコルの指定
  使用するプロトコルを Protocolプロパティに設定します。設定する値は
  sckTCPProtocol となります。

(2) PC側のTCPで使う送信ポートを LocalPort プロパティに設定します。
  パソコン側の送り出しポート番号を指定します。

(3) 受信側となるデバイス側のIPアドレスをRemoteHost プロパティに設定します。
  またRemotePort プロパティに、デバイス側の受信ポート番号を設定します。

(4) SendData メソッドを呼び出してデータを送信します。
  

《データを受信する場合》

(1) PC側のUDPで使う送信ポートを LocalPort プロパティに設定します。
  パソコン側の送信ポート番号を指定します。

(2) 受信側となるデバイス側のIPアドレスをRemoteHost プロパティに設定します。
  またRemotePort プロパティに、デバイス側の受信ポート番号を設定します。

(3) PC側の受信ポート番号をBindメソッドで指定します。
  このポートに受信データを受けると、Data_Arrivalイベントが発生します。

(4) Data_Arrivalイベント内でGetDataメソッドを呼び出して受信したデータを取り出
  します


【アプリ例のフォーム】

TCP通信の場合には、コネクションの確立という手順が必要ですので、まず接続
というボタンを用意してコネクションを確立させます。
この後は送信、受信が連続して同じポート同士で継続することが可能になります。

試作したTCPアプリケーションのフォームは下図のようになっています。
4つのコネクションを張って送受信のテストが出来るようにしました。
そのため、まずWinsockコントロールを4個と接続、送信、テキストボックスとも
各々4こずつ用意しました。

それ以外にTimerコントロールを1個と終了ボタンを1個貼り付けています。






【アプリ例プログラム解説】

上記フォームに対するコード部は、まず、コネクション接続部は
下記のようになっています。

(1) フォームロード時
 まず送信回数用のカウンタを0クリアし、Timer1の時間間隔を
 10msecとしタイマは停止状態としておきます。

(2)接続1から接続4のボタン押下時
 それぞれの相手ポート番号を指定してConnectメソッドでコネクションを
 確立させます。
 Local Port番号はWinsockのプロパティ内で12001から順に設定しています。








(3) 送信1ボタン押下時
 送受信カウンタの値を文字列にして送信します。そしてタイマーのスタート
 をしています。
 デバイス側では、このカウンタの文字列を表示してから、折り返し固定の
 文字列を返送します。

(4) 送信2から送信4のボタンの押下時
 それぞれ対応するテキストボックス内の文字列を送信データとして送信
 します。
 デバイス側ではこれを液晶表示器に表示します。

(5) Winsock1の受信イベント時
 デバイス側から送られて来た文字列データを、そのままText1のテキスト
 ボックスに表示します。

(6) タイマーのイベント時
 10msec周期で入るイベント毎に、送信カウンタを+1しては、送信1ボタン
 を押したときと同じようにカウンタの値を文字列にして送信します。

(7) 終了ボタン押下時
 タイマーを停止して、全てのWinsockをクローズします。
 最後にフォームを消去します。











【プログラムファイル】

上記のTCP通信テスト用のVB6ファイルは下記でダウンロードできます。

 ☆TCPテストプログラム1式





        目次に戻る