はじめに、C 言語を使ったプログラムの例として用意したプログラムを使って、 この授業の最終目標でもあるネットワーク通信プログラムを動かしてみる。
はじめに、次の2つのファイルを「対象をファイルに保存」を使って「デスクトップ」にダウンロードする。
スタートボタンを右クリックし、エクスプローラを開き、「デスクトップ」にあるダウンロードしたファイルを 一つ上の階層に移動させる。
「スタート」→「Center」→「その他」とたどり、 Cygwin を起動する。 その後、プログラムの「コンパイル」を行い、「実行」してみる。
ogaito@CED102 ~ $ cc chat4.c -o chat4 ogaito@CED102 ~ $ ./chat4 -h proge1.s.fpu.ac.jp Input your name => ogaito
あとは、てきとぉに何か入力すると、参加者全員に配信される。
入力した名前は他の参加者への表示の際に行頭に "[ogaito]"
のように表示される。
参加を取りやめるには、"quitquit"
と入力するか、Ctrl-C
を押す。
この「チャット」を実現している(注)上記のプログラムは、(保存するのではなく、開いてみるとすぐわかることであるが) 動作に関係のないコメントを含めても200行程度のものである。 この授業では、この chat4.c 程度のプログラムの読み書きができることを目標とする。
注
実際には、chat4.c から生成されるプログラムと協調して動作する「サーバプログラム」も必要である。
が、こちらは少しややこしいので、参考資料としてのみ掲げておくにとどめる。
はじめ、少し異なるバージョンを用意したのであるが、Cygwin ではうまくコンパイルできない場合があるようなので変更した。
上では、各自が座っている目の前のコンピュータで、プログラムのコンパイルを行ったが、 今後は、プログラミング E のために用意された専用のコンピュータを併用して学習を進める。 そのための方法を、次に説明する。
C を学習するための計算機は、proge1.s.fpu.ac.jp という名前で(体験プログラムの起動時にも指定した) 情報センターに設置され、OS として CentOS 4.4が インストールされている。演習室からこの計算機を利用するためにはログインという操作が必要となる。 このログインのために、プログラミング Eでは、TeraTerm を利用する。
[スタート]→[センター]→[インターネット]→[TeraTerm]とたどり、 teraterm を起動する。
Host を「proge1.s.fpu.ac.jp」、Service を SSH、SSH Version が SSH2、 TCP port#: が 22 となっていることを確認して、[OK]をクリックする。
[Security WARNING]が出た場合、fingerprint として
が表示されていることを確認して、[Continue] をクリックする。 このとき、[Add this machine and its key to ...]にチェックを入れておけば、 次回からは尋ねられなくなる。
User name, Passphrase に割り当てられたものを入力して、 [Use plain password to log in] にチェックした上で [OK]をクリックする
Welcome to ProgE ! [user99@proge1]~%
となれば、成功!
"%" より前の部分をプロンプトと呼ぶ。 プロンプトの設定を変えることもできるが、プログラミング E の授業の範囲ではないので省略。
授業が終わってからなどの時間に聞いてくれれば対応します。
単純な文字列だったり、文字列の長さが短かったりした場合や、 新しいパスワードが一致しなかった場合は、次のように表示されてパスワードは変更されない。[user99@proge1 ~]$ passwd Changing password for user user99. Changing password for user99 (current) UNIX password: ←初期パスワードを入れる。(画面には表示されない) New UNIX password: ←新しいパスワードを入れる。(同じく) Retype new UNIX password: ←新しいパスワードをもう一度入れる。(同じく) passwd: all authentication tokens updated successfully.
BAD PASSWORD: it is based on a dictionary word BAD PASSWORD: it's WAY too short Sorry, passwords do not match
割り当てられたアカウントは Programming E でのみ有効なものである。 アカウントと個人の対応をつけるため、次のようにして氏名と学籍番号を登録する。
[user99@proge1 ~]$ chfn Changing finger information for user99. Password: ←この時点で有効なパスワードを入れる Name []: Tatoku Ogaito (ogaito) ←氏名 (アカウント名) Office []: Office Phone []: Home Phone []: Finger information changed.
最低限、設定するのは Name
だけでよい。残りは登録したくなければ Enter キーを押せば良い。
登録ルールとしては Name は必ず設定し、かつ () の中に情報センターのアカウント s0.... を入れること。
センターのアカウント名が間違っていた場合、この後のディスク共有がうまくできない場合がある。
ProgE1 上のファイルをウィンドウズから編集するために、ProgE1 上のハードディスクを 各端末のネットワークドライブとして利用できるようにする。その際に、 ProgE1 の正規のユーザであることを証明するためのパスワードを設定する。 このパスワードをウィンドウズにログオンする際のパスワードと同じにしておくと パスワードの入力を減らすことができる。入力をめんどうと感じないのであれば、 同じにする必要はない。
[user99@proge1 ~]$ smbpasswd Old SMB password: New SMB password: Retype new SMB password: Password changed for user user99
ProgE1 の利用を取りやめる操作である。
デフォルトでは、logout
と入力することで、 teraterm も同時に終了する。
ログアウトができることを確認したら、もう一度同じ操作をして、ログインしておく
[スタート]→[Center]→[その他]とたどると、「proge1 home」という ProgE1 のディスクを利用するためのメニューがある。 それをクリックすることで、ProgE1 のディスクを利用できるようになる。 情報処理演習室以外から利用したい場合は、自分の MO にコピーしておく必要がある。
問題がなければ、ひとつのウィンドウが開き、ProgE1 のディスクをウィンドウズから利用するための準備が整う。 初回の授業の際には、センターのアカウントと ProgE1 のアカウントの対応付けのための準備が必要なため、先走るとできないかもしれない。
teraterm のプロンプトの後ろに ls
と入力して、Enter キーを押してみると
最初はなにも表示されず、いきなりプロンプトが返ってきたはずである。
確かに、ウィンドウズから ProgE1 のディスクを利用しているのだという事を確認するために、
適当なファイルもしくはフォルダ(全角文字は使わないようにすること)を作成した後、もういちど ls
を実行してみる事。
作成したファイルの名前が表示されるはずである。
プログラミング E では、プログラムの作成に使用するエディタを特に指定はしない。 もし、Unix 系の OS を使ったことがあり、Emacs や vi を使いたければ、使用してもかまわない。 特別な経験がない場合には、今までに受講した授業で使用したエディタ(秀丸)を使えば良い。 ワープロ(Word 等)はプログラムの作成には適切ではないので使用しない事。 秀丸は C 言語のプログラムを編集する際に、少し便利な機能があること、複数の漢字コードに対応していること、 複数の改行コードに対応していることから、Windows 上からプログラムを作成するのであれば便利と思われる。
適当なエディタを使って、ProgE1 のディスク上(Oドライブ)にファイルを作成してみる。
ただし、名前を kadai00.txt
とし、次の内容を記入すること。
ウィンドウズには、標準で C の開発環境はついてきません。 ウィンドウズで広く使われている C の開発環境は、有償でかつそれなりの値段がします。
しかし、無料の開発環境がないわけではありません。 この授業の最初に使用した Cygwin はフリーソフトウェアとして 配布されており、誰でも自由に利用することができます。
一方、Mac OS X の場合は、C の開発環境が OS の付属品として用意されています。 通常の状態ではインストールされていませんが、「開発環境」をインストールすれば C を使いはじめることができます。
Linux 等の UNIX 互換環境の場合も標準で C の開発環境が用意されています。 詳しくは付属のドキュメントを参照するか、直接聞いてください。
日程表 | 課題1 |