日本 - 朋友们你们好。我是来寻求帮助的。老师出了C语言的一道通信题,我实在不会做。
其实题挺有意思的。可惜我没悟出它的解法。
希望高手们可以抽空帮我看一下,小妹在三感谢。以下是日语解释。
課題
􀂄 次の要件と次ページ以降の通信規定を満たすTCP/IP通信型クイズ出題クライアントプログラムを作成せよ
􀂋サーバ(作成不要)
􀁺 認証されたユーザに対しクイズを出題,5問正解したら秘密のメッセージを送信する
􀁺 すべての状態において,クライアントからの要求に対して受動的に動作を行う
􀂋クライアント
􀁺 クイズサーバに対応したユーザインタフェースを実現する
通信規定(1/7)
􀂄 状態の規程
􀂋サーバには以下の状態が存在
􀁺 ユーザ名を受け付ける状態(状態1)
􀁺 パスワードを受け付ける状態(状態2)
􀁺 クイズ出題を受け付ける状態(状態3)
􀁺 解答を受け付ける状態(状態4)
􀁺 秘密のメッセージの送信を受け付ける状態(状態5)
􀂄 クライアントでは,サーバがどの状態にあるかを判断して,必要なデータ送信を実施すること
通信規定(2/7)
􀂄 ユーザ名受付状態(状態1)
􀂋 ユーザ名として,自分の学籍番号(CD付)を使用すること
􀂋 例: p010123(アルファベットは小文字)
􀂋 ユーザ名の送信には,「USER <ユーザ名>」の形式を使用すること
􀂋 正しいユーザ名が入力された場合には,文字列“OK”を返し,パスワード受付状態(状態2)に遷移すること
􀂋 誤ったユーザ名が入力された場合には,文字列“NG”を返し,状態を遷移しないこと
􀂋 「USER」以外のコマンドが入力された場合には,文字列“ERROR”を返し,状態を遷移しないこと
通信規定(3/7)
􀂄 パスワード受付状態(状態2)
􀂋 パスワードとして,自分の学籍番号(CD付)を反対から書いた文字列を使用すること
􀂋 例: 321010p
􀂋 パスワードの送信には,「PASS <パスワード>」の形式を使用すること
􀂋 正しいパスワードが入力された場合には,文字列“OK”を返し,クイズ出題受付状態(状態3)に遷移すること
􀂋 誤ったパスワードが入力された場合には,文字列“NG”を返し,ユーザ名受付状態(状態1)に遷移すること
􀂋 「PASS」以外のコマンドが入力された場合には,文字列“ERROR”を返し,状態を遷移しないこと
通信規定(4/7)
􀂄 クイズ出題受付状態(状態3)
􀂋 クイズの正解数はサーバ・クライアント双方で保持しておくこと
􀂋 クイズの出題要求には,「QUIZ <現在の正解数>」の形式を使用すること(すなわち,正解数はクライアントでも保持しておく必要がある)
􀂋 正しい正解数が入力された場合には,クイズを出題(すなわち,クイズの文章を送信)し,解答受付状態(状態4)に遷移すること
􀂋 誤った正解数が入力された場合には,文字列“NG”を返し,状態を遷移しないこと
􀂋 「QUIZ」以外のコマンドが入力された場合には,文字列“ERROR”を返し,状態を遷移しないこと
通信規定(5/7)
􀂄 解答受付状態(状態4)
􀂋 解答の送信には,「ANSR <答え>」の形式を使用すること
􀂋 正しい解答が入力された場合には,文字列“OK”を返し,正解数を1増加させること
􀂋 間違えた解答が入力された場合には,文字列“NG”を返すこと
􀂋 正解数が5になった場合には,秘密メッセージ受付状態(状態5)に遷移すること.それ以外の場合にはクイズ出題受付状態(状態3)に遷移すること
􀂋 「ANSR」以外のコマンドが入力された場合には,文字列“ERROR”を返し,状態を遷移しないこと
通信規定(6/7)
􀂄 秘密メッセージ受付状態(状態5)
􀂋 秘密のメッセージは「GET MESSAGE」にて要求すること
􀂋 正しいコマンドが送られてきた場合には,秘密のメッセージ文章を返し,状態を遷移しないこと.
􀂋 引数部に誤りがある場合(すなわち「MESSAGE」以外の文字列を受信した場合)には,文字列“NG”を返し,状態を遷移しないこと
􀂋 「GET」以外のコマンドが入力された場合には,文字列“ERROR”を返し,状態を遷移しないこと
通信規定(7/7)
􀂄 終了メッセージ
􀂋 サーバは「QUIT」を受信すると“GOOD BYE”を返し,どの状態にいても接続を切断すること
􀂋 クライアントは「GOOD BYE」を受信すると,プログラムを終了する(とよい)
クライアントの条件
􀂄 クライアントでは通信規定に基づき的確なユーザインタフェースを実現すること
􀂋 「ユーザ名を入力して下さい→」の表示
􀂋 サーバからのメッセージを受信したときには,それをそのまま表示するのではなく適当な文章に変換して表示
􀂋 NG → 「パスワードが違います」など
􀂄 必要な状態を記憶しておくこと
􀂋 クイズ正解数は利用者が覚えておくのではなく,クライアントソフトで自動的に記憶可能である
􀂋 クライアントによる支援クイズサーバ簡易版とクライアントを提供します.
圧縮にはzipを利用し,sample_oli_utf8.zipとしてあります.
Linux環境で解凍するには,以下のコマンドを実行します.
unzip sample_oli_utf8.zip
これにより,実行ファイル「quiz_server」と「client」が取り出せます.
インタフェースは組み込まれていません.
(なお,同名ファイルがあれば上書きされる恐れがあります.注意して下さい.)
このままでは実行許可がありませんので,次のコマンドにてパーミッションを変更して下さい.
chmod u+x quiz_server
chmod u+x client
● 実行環境
クイズサーバプログラム「quiz_server」は,Linux環境でコンパイルされた実行型ファイルです.
Linux上でのみ動作します.漢字コードは,UTF-8です.
● 実行方法
ポート番号は起動時に指定するようにしてあります.実行する場合には,
./quiz_server 12345
のように,第1引数にポート番号を指定して下さい.起動後は,第2回課題で指定したプロトコルにしたがって動作します.
クライアントのほうは,
./client 127.0.0.1 12345
のように,第1引数にIPアドレス,第2引数にポート番号を指定して下さい.なお,サーバと同じマシンでクライアントを起動する場合には,IPアドレスを127.0.0.1(ローカルアドレス)とすれば動作します.
● アカウント
ユーザ名とパスワードには,以下の4種類が登録されています.
ユーザ名 パスワード
test1 1tset
test2 2tset
test3 3tset
test4 4tset
● クイズ出題
プログラムを簡略化するため,15問のみ用意してあります.
● 秘密のメッセージ
ユーザ名 メッセージ
test1 secret_message1
test2 secret_message2
test3 secret_message3
test4 secret_message4
提供sample_oli_utf8.zip
下载积分: 元气 1 点
上面说的挺麻烦,其实依我理解,要做的client.c需要做的改变是,
没改之前,需输入USER test1,改后,就变成提问的形式,ユーザ名を入力して下さい→test1
没改之前,需输入PASS 1tset,改后,就变成提问的形式,パスワードは?→1tset
等。。
上面说的有点乱,小妹QQ:75748086。。随时恭候您的疑问和指导。。
由于作业很重要,哪怕是一点点思想也好。
拜托传授。麻烦烦您了。再次致以最崇高的谢意。。。
评论
太长了,估计没人有那么多时间帮你了,MM。同情下!
日本 Japan
·日本中文新闻 唐田绘里香为新剧《极恶女王》剃光头 展现演员决心
·日本中文新闻 真子小室夫妇新居引发隐私担忧
·日本中文新闻 前AKB48成员柏木由纪与搞笑艺人交往曝光
·日本学校 {日本国际学校}梅田インターナショナルスクール
·日本学校 LINE:sm287 陳雨菲、20歳、台湾からの留学生、東京に来たばかり
·日本留学生活 出售平成22年走行48000km 代步小车
·日本华人网络交流 円相場 一時1ドル=140円台まで上昇?
·日本华人网络交流 问日本华人一个问题
·日本旅游代购 富山接机
·生活百科 英国转澳大利亚转换插头
·汽车 【求助】修车遇到困难怎么办?