VisualBasicやC#で簡単なクライアント・サーバープログラムをつくろう 第一回:クライアント編
はじめに
今回は、筆者が制作したサーバーとクライアントのクラスライブラリを使用してメッセージと画像データのやりとりが行えるアプリケーションをつくってみましょう!
まずは各クラスライブラリでできることを紹介します。
クライアントでできること
- IPv4アドレスの指定
- ポート番号の指定
- メッセージ(文字列)の送信
- 画像ファイルの送信 ※1ファイルあたり、約10MBまで
サーバーでできること
- ポート番号の指定
- 複数クライアントからの同時受信
- メッセージの受信
- 画像ファイルの受信
- 受信時イベント発生
なお、片方のみのクラスライブラリを使用してデータの送受信したい場合は、先頭の1バイトにメッセージか画像かを判断する情報が含まれているため、注意が必要です。
ダウンロード
Dropbox - ClientSampleProgram_v0_0.zip
ファイル名をクリックしてダウンロードします。
ダウンロードしたファイル内の構成
・クラスライブラリ本体
プロジェクトの新規作成時の参照の追加に使用します。
なお、クライアントとサーバーの両方のクラスライブラリが封入されています。
・サーバー・クライアントアプリ
サーバーとクライアントの機能を備えもつ、便利なアプリです。
サンプルプログラムの動作確認、サーバーとクライアントの挙動の確認に使用します。
・サンプルプログラム
今回制作するクライアントアプリの完成版が入っています。
ソースプロジェクト
同封しているクラスライブラリおよびアプリケーションのすべてのソースプロジェクトがあります。コードの中身を詳しく知りたい方におすすめです。
クライアントクラスライブラリの使い方
参照追加
ダウンロードしたファイルの中にある
クラスライブラリ本体(フォルダー)\クライアント(フォルダー)\ClientLib.dll
を参照に追加してください。なお、ClientLib.dllを他のフォルダーに移してから参照の追加を行いたい場合は、必ずサーバー(フォルダー)内のすべてのファイルを一緒に移してください。
そして、下記コードをコードファイルの先頭に入力します。
これにより、ClientLibと入力せずともClientLib内のクラスを参照できるようになります。
宣言
自動変数にしてしまうと、送信のたびに接続処理を行わなければいけなくなってしまうので、避けましょう。
次はサーバーに接続
メッセージを送る
接続に失敗すると例外を投げます。try&catchで例外を拾わないと、動作が停止してしまうかもしれないので、必ず挿入してください。
画像を送る
接続を終了する
接続先を変えるときや、アプリケーションを終了するときは必ず接続を終了する処理を行いましょう。
クライアントを作る
以上の使い方を理解したうえで、実際に簡単なクライアントアプリを作ってみましょう。
プロジェクトの作成
C#もしくはVisualBasicで、Windows フォーム アプリケーションもしくはWPFアプリケーションを選択して、新規にプロジェクトを作成してください。
今回はC#とVBのWindows フォーム アプリケーションのソースコードを載せますが、VBは自動翻譯したものに手を加える作り方をしているので、おかしな書き方になってるかもしれないです。
コントロールの設置
以下の画像のように、コントロールを配置してみてください。
今回使用するコントロール
- 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です。
最後に
いかかでしたか?
例外処理でコードがかさばったりはしますが、クライアントとしての処理はすごく簡潔なコードで記述できたのではないでしょうか。
次回はサーバーのクラスライブラリの使い方と、それを用いたアプリケーションの作り方を解説したいと思います。
次回
第二回を投稿しました。是非ご覧ください!
VisualBasicやC#で簡単なクライアント・サーバープログラムをつくろう 第二回:サーバー編 - まやのはてな