ネットワーク通信の基礎

9月24日に,島根県産業技術センターにて,ソケット通信の基礎と題した講演を,弊社ysugaこと代表取締役の菅が行って参りました.
本投稿は,その講演内容と,課題内容についてのサポートページです.講演ではネットワーク通信の基礎について解説しました.実習では,クライアントとサーバーの両方を,非常にシンプルなテキストベースのプロトコルで通信させた場合について解説しました.また,発展編として,サーバーのフレームワーク化や,クライアントのライブラリ化,また他言語対応について,実例を示しています.ソケット通信を使ったプログラミングへの入門者の今後の参考になれば幸いです.

講演資料

ネットワーク通信入門 from Suga Yuki

課題ファイル

ダウンロードして展開し,Visual C++ 2013 (Express Editionで動作確認)でビルドしてみてください.

Windows7をお使いの方は,音声ファイルがありません.ダウンロードより,音声ファイルをダウンロードし,C:\Windows\Mediaフォルダにコピーしてから実行してください.

課題1

テスト方法

  • kadai1プログラムをビルドして実行(サーバー待機状態)
  • Tera TermでIPアドレス「127.0.0.1」の27015番ポートに接続する
  • キーボードでabcと打ってリターン
  • 実行中のプログラムに3バイト受信と表示される

ダウンロード

課題2

テスト方法

  • kadai2プログラムをビルドして実行(サーバー待機状態)
  • Tera TermでIPアドレス「127.0.0.1」の27015番ポートに接続する
  • キーボードでsnd1と打ってリターン
  • C:\Windows\media\ring01.wavが再生される
  • キーボードでsnd2と打ってリターン
  • C:\Windows\media\ring02.wavが再生される
  • キーボードでsnd3と打ってリターン
  • C:\Windows\media\ring03.wavが再生される

ダウンロード

課題3

  • snd*に対応
  • もしsndから始まらないならエラー
  • 数字は1ケタと仮定
  • 4文字目のデータは数字
  • 数字の文字コードから48を引くと数値になる

テスト方法

  • kadai3プログラムをビルドして実行(サーバー待機状態)
  • Tera TermでIPアドレス「127.0.0.1」の27015番ポートに接続する
  • キーボードでsnd1と打ってリターン
  • C:\Windows\media\ring01.wavが再生される
  • キーボードでsnd2と打ってリターン
  • C:\Windows\media\ring02.wavが再生される
  • キーボードでsnd3と打ってリターン
  • C:\Windows\media\ring03.wavが再生される
  • snd1からsnd9まで試す

ダウンロード

課題4

テスト方法

  • kadai3プログラムをビルドして実行(サーバー待機状態)
  • kadai4プログラムをビルドして実行
  • 音が鳴れば成功

ダウンロード

課題5

テスト方法

  • kadai3プログラムをビルドして実行(サーバー待機状態)
  • kadai5プログラムをビルドして実行
  • キーボードで「1」と打つ
  • 音が鳴れば成功
  • キーボードで「1」から「9」まで試す
  • qを打つと終了

ダウンロード

発展版

サーバー側はフレームワーク化.クライアント側はライブラリ化

Visual C++ 2013 Express Editionで動作確認出来ます.
ソケットもクラスとして機能をまとめてあるので,その部分のコードを再利用すれば,シンプルにサーバー・クライアント通信が可能です.
ダウンロード

クライアントの多言語化

snd1と打つクライアントプログラムを複数の言語で実装しました.参考になると思います.
Java版:ダウンロード
Eclipseでインポートして使ってください.

C#版:ダウンロード
Visual C# 2013 Express Editionで動作確認できます.