VisualBasicやC#で簡単なクライアント・サーバープログラムをつくろう 第一回:クライアント編

はじめに

今回は、筆者が制作したサーバーとクライアントのクラスライブラリを使用してメッセージと画像データのやりとりが行えるアプリケーションをつくってみましょう!

まずは各クラスライブラリでできることを紹介します。

クライアントでできること

  • IPv4アドレスの指定
  • ポート番号の指定
  • メッセージ(文字列)の送信
  • 画像ファイルの送信 ※1ファイルあたり、約10MBまで

サーバーでできること

  • ポート番号の指定
  • 複数クライアントからの同時受信
  • メッセージの受信
  • 画像ファイルの受信
  • 受信時イベント発生

なお、片方のみのクラスライブラリを使用してデータの送受信したい場合は、先頭の1バイトにメッセージか画像かを判断する情報が含まれているため、注意が必要です。

ダウンロード


Dropbox - ClientSampleProgram_v0_0.zip

ファイル名をクリックしてダウンロードします。

ダウンロードしたファイル内の構成

・クラスライブラリ本体

 プロジェクトの新規作成時の参照の追加に使用します。

 なお、クライアントとサーバーの両方のクラスライブラリが封入されています。

・サーバー・クライアントアプリ

 サーバーとクライアントの機能を備えもつ、便利なアプリです。

 サンプルプログラムの動作確認、サーバーとクライアントの挙動の確認に使用します。

・サンプルプログラム

 今回制作するクライアントアプリの完成版が入っています。

ソースプロジェクト

 同封しているクラスライブラリおよびアプリケーションのすべてのソースプロジェクトがあります。コードの中身を詳しく知りたい方におすすめです。

クライアントクラスライブラリの使い方

参照追加

ダウンロードしたファイルの中にある

クラスライブラリ本体(フォルダー)\クライアント(フォルダー)\ClientLib.dll

を参照に追加してください。なお、ClientLib.dllを他のフォルダーに移してから参照の追加を行いたい場合は、必ずサーバー(フォルダー)内のすべてのファイルを一緒に移してください。

そして、下記コードをコードファイルの先頭に入力します。

C#

VB

これにより、ClientLibと入力せずともClientLib内のクラスを参照できるようになります。

宣言

C#

VB

自動変数にしてしまうと、送信のたびに接続処理を行わなければいけなくなってしまうので、避けましょう。

次はサーバーに接続

C#

VB

メッセージを送る

C#

VB

接続に失敗すると例外を投げます。try&catchで例外を拾わないと、動作が停止してしまうかもしれないので、必ず挿入してください。

画像を送る

C#

VB

接続を終了する

C#

VB

接続先を変えるときや、アプリケーションを終了するときは必ず接続を終了する処理を行いましょう。

 

クライアントを作る

以上の使い方を理解したうえで、実際に簡単なクライアントアプリを作ってみましょう。

プロジェクトの作成

 C#もしくはVisualBasicで、Windows フォーム アプリケーションもしくはWPFアプリケーションを選択して、新規にプロジェクトを作成してください。

今回はC#VBWindows フォーム アプリケーションのソースコードを載せますが、VBは自動翻譯したものに手を加える作り方をしているので、おかしな書き方になってるかもしれないです。

コントロールの設置

以下の画像のように、コントロールを配置してみてください。

f:id:MayaGalaxy:20141026011720p:plain

 

今回使用するコントロール

  • pictureBox1 (PictureBox、送信する画像の確認)
  • textBox1 (TextBox、相手接続先のIPアドレスを指定)
  • textBox2 (TextBox、相手接続先のポート番号を指定)
  • textBox3 (TextBox、送信するメッセージを入力するため)
  • button1 (Button、サーバーとの接続を行う指示をするため)
  • button2 (Button、画像を選択するため)
  • button3 (Button、画像を送信するため)
  • button4 (Button、メッセージを送信するため)
  • label1 (Label、表示用)
  • label2 (Label、表示用)

 コーディング

上記と全く同じコントロール名、プロジェク名、フォーム名にすれば、下のソースコードをコピペするだけでしっかり動作してくれます(笑)

プロジェクト名はSampleClientApplicationCsp(C#)、SampleClientApplicationVb(VB)で、フォームの名前がForm1です。

C#

VB

 

 最後に

いかかでしたか?

例外処理でコードがかさばったりはしますが、クライアントとしての処理はすごく簡潔なコードで記述できたのではないでしょうか。

次回はサーバーのクラスライブラリの使い方と、それを用いたアプリケーションの作り方を解説したいと思います。

 

次回

第二回を投稿しました。是非ご覧ください!


VisualBasicやC#で簡単なクライアント・サーバープログラムをつくろう 第二回:サーバー編 - まやのはてな