近年の実用的なアプリケーションプログラムは、クラウド技術の発達も手伝って、サーバや他端末との通信を行うことが当たり前のようになっており、その基礎技術を身に着けておくことはさまざまなアプリケーション開発において役に立つと考えられる。本授業ではソケット通信に着目をし、ソケットプログラミングの概要理解、マルチプロセスの制御、代表的な通信方式であるTCPとUDPの違いを理解することを目標とする。また、ソケットプログラミングを用いた通信プログラムの作成を行えるようにする。
概要:
前半は,標準的なLinux上でpythonを用いたソケットプログラムを行う。pythonという新しい言語に触れるとともに、簡易なソケット通信プログラムを行うことで、ソケットの役割等を身につける。後半はC言語を用いて、ソケット通信を行い、さらに細かなオプションや技術的事項を理解する。また、マルチプロセスが重要な技術であることを確認し、子プロセスの生成と回収について学ぶ。
授業の進め方・方法:
ソケットプログラムはOSによって多少異なる部分もあるが、本講義ではLinuxを演習用PCのOSとして用いる。また、授業の前半では, 近年よく用いられているPythonを、授業の後半ではC言語を用いる。学生は実際に自らコーディングを行うことを原則とすし、また授業はオンライン会議ツールを用いて同時配信を行い、資料も同様にオンラインでの公開を行う。
注意点:
本授業ではネットワーク上のパケットも扱うため,使い方によっては他人に多大な迷惑をかける可能性もある.学生はそれらの可能性に対してしっかりと認識し,正しい倫理観をもってこれらの技術を扱うこと.
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
プロトコル |
プロトコルについて説明できる
|
2週 |
IPアドレス |
IPアドレスの構成を説明できる。
|
3週 |
Pythonによるインタラクティブなプログラミング |
Pythonの関数や変数の利用ができる
|
4週 |
TCPサーバプログラムの作成 |
Pythonを使ってTCP通信を行うサーバプログラムを作成することができる。
|
5週 |
TCPクライアントプログラムの作成と動作確認 |
Pythonを使ってTCP通信を行うクライアントプログラムを作成することができる
|
6週 |
TCPサーバプログラムのマルチスレッド化 |
Pythonを使ったTCP通信を行うサーバプログラムをマルチスレッドで作成することができる。
|
7週 |
TCPサーバプログラムのマルチプロセス化 |
Pythonを使ったTCP通信を行うサーバプログラムをマルチプロセスで作成することができる。
|
8週 |
pythonの子プロセスの処理の流れ |
pythonでforkしたあとの流れを説明することができる。
|
2ndQ |
9週 |
[演習]簡易ゲームクライアントプログラムの作成1 |
これまでに学んだ知識を応用して、既存のゲームサーバプログラムと通信可能なプログラムを作成できる。
|
10週 |
[演習]簡易ゲームクライアントプログラムの作成2 |
これまでに学んだ知識を応用して、既存のゲームサーバプログラムと通信可能なプログラムを作成できる。
|
11週 |
HTTPリクエスト |
HTTPリクエストの構成や意味を説明することができる。
|
12週 |
HTTPレスポンス |
HTTPレスポンスの構成や意味を説明することができる。
|
13週 |
Webサーバプログラムの作成 |
HTTPリクエストを解析し、HTTPレスポンスを返すWebサーバプログラムを作ることができる。
|
14週 |
Webサーバプログラムの作成 |
HTTPリクエストを解析し、HTTPレスポンスを返すWebサーバプログラムを作ることができる。
|
15週 |
Webサーバプログラムの作成と動作確認 |
HTTPリクエストを解析し、HTTPレスポンスを返すWebサーバプログラムを作ることができる。
|
16週 |
期末試験 |
|
後期 |
3rdQ |
1週 |
C言語を用いたTCPサーバプログラムとクライアントプログラムの概要把握 |
C言語を使ってTCP通信を行うサーバ/クライアントプログラムの流れを把握する
|
2週 |
C言語を用いたTCPクライアントプログラムの作成 |
C言語を使ってTCP通信を行うクライアントプログラムを作成することができる
|
3週 |
C言語を用いたTCPサーバプログラムの作成 |
C言語を使ってTCP通信を行うサーバプログラムを作成することができる
|
4週 |
TCP通信による簡易ATMシステムの作成 |
ATMを模したシステムをTCP通信により作成することができる
|
5週 |
TCP通信による簡易ATMシステムの作成 |
ATMを模したシステムをTCP通信により作成することができる
|
6週 |
バイナリ通信 |
文字列の送受信とバイナリ通信の違いを理解することができる。
|
7週 |
構造体に必要なメモリ領域(パディング) |
構造体に必要なメモリ領域を計算することができる。
|
8週 |
中間試験 |
|
4thQ |
9週 |
バイトオーダ |
バイトオーダについてビッグエンディアンとリトルエンディアンの違いを説明することができる
|
10週 |
C言語によるマルチプロセス化 |
C言語を用いたマルチプロセスプログラミングを理解し、プロセスの生成・回収をすることができる。
|
11週 |
TCP通信を用いたソフトウェアの開発(電子掲示板/チャットシステム) |
TCP通信を用いて簡易的な電子掲示板システムやチャットシステムを作ることができる
|
12週 |
TCP通信を用いたソフトウェアの開発(電子掲示板/チャットシステム) |
TCP通信を用いて簡易的な電子掲示板システムやチャットシステムを作ることができる
|
13週 |
TCP通信を用いたソフトウェアの開発(電子掲示板/チャットシステム) |
TCP通信を用いて簡易的な電子掲示板システムやチャットシステムを作ることができる
|
14週 |
TCP通信を用いたソフトウェアの開発(電子掲示板/チャットシステム) |
TCP通信を用いて簡易的な電子掲示板システムやチャットシステムを作ることができる
|
15週 |
TCP通信を用いたソフトウェアの開発(電子掲示板/チャットシステム) |
TCP通信を用いて簡易的な電子掲示板システムやチャットシステムを作ることができる
|
16週 |
|
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系分野 | プログラミング | 要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。 | 3 | 前9,前10,前13,後4,後5,後11,後12,後13,後14,後15 |
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。 | 3 | 前9,前10,前13,前14,前15,後4,後5,後11,後12,後13,後14,後15 |
情報通信ネットワーク | プロトコルの概念を説明できる。 | 4 | 前1 |
プロトコルの階層化の概念や利点を説明できる。 | 4 | 前1 |
ローカルエリアネットワークの概念を説明できる。 | 4 | 前2 |
インターネットの概念を説明できる。 | 4 | 前2,前11,前12 |
TCP/IPの4階層について、各層の役割を説明でき、各層に関係する具体的かつ標準的な規約や技術を説明できる。 | 4 | 前2 |
情報通信ネットワークを利用したアプリケーションの作成方法を説明できる。 | 4 | 前4,前5 |
基本的なルーティング技術について説明できる。 | 4 | 前2 |
基本的なフィルタリング技術について説明できる。 | 4 | |
分野別の工学実験・実習能力 | 情報系分野【実験・実習能力】 | 情報系【実験・実習】 | 与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。 | 3 | 前4,前5,前6,前7,前11,前12,後1,後2,後3,後6,後7,後9,後10 |
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。 | 3 | 前13,前14,後2,後3 |
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。 | 3 | 前13,前14,後2,後3 |
フローチャートなどを用いて、作成するプログラムの設計図を作成することができる。 | 3 | 前4,前5,前13,後2,後3 |
問題を解決するために、与えられたアルゴリズムを用いてソースプログラムを記述し、得られた実行結果を確認できる。 | 3 | 前6,前7,前8,前11,前12,前15,後6,後7,後9,後10 |
標準的な開発ツールを用いてプログラミングするための開発環境構築ができる。 | 3 | 前3,前4,前5,後1 |
要求仕様にあったソフトウェア(アプリケーション)を構築するために必要なツールや開発環境を構築することができる。 | 3 | |
要求仕様に従って標準的な手法によりプログラムを設計し、適切な実行結果を得ることができる。 | 3 | 前9,前10,前13,前14,前15,後4,後5,後11,後12,後13,後14,後15 |