echo サーバを作ってみよう (1)

TOP >> ネットワークプログラミングの基礎知識 >> echo サーバを作ってみよう (1)

(追記) (追記ここまで)
(追記) (追記ここまで) (追記) (追記ここまで)

サーバとは

何度も同じことを書いていますが、さらにしつこく言います。

サーバとは特定のポートを見張っているプログラムのことです。 クライアントが connect してくるまでは、仕事はポートを見張ることしかありません (別に何か仕事をしていてもいいのですが)。クライアントが connect してきたら、プロトコルに従ってお話して、クライアントが望むサービスを 提供します (もちろん変な要求をしてきたらそれに応じてはいけません)。

ここでは簡単なサーバを作ってみましょう。

どんな役割のサーバを作るか

ではどんな役割のサーバを作るかですが、まずは最も簡単そうな 「クライアントが送ってきた文字列をそのまま返すサーバ」にしましょう。 実はこういう役割のプロトコルは既に存在します。/etc/services に
echo		 7/tcp
とあるようにポート番号は7です。FreeBSD の場合、echod というサーバは 存在せず、inetd の内部に echo サーバが組み込まれています。デフォルトの /etc/inetd.conf は
#echo stream tcp nowait root internal
とコメントアウトされており、echo ポート(ポート番号7)にアクセスしても inetd は反応してくれません。そこで root になって、
echo stream tcp nowait root internal
と先頭の「#」をはずして、
# killall -HUP inetd
として inetd の再起動をしてください。では telnet で確かめてみましょう。
% telnet localhost echo
Trying 127.0.0.1...
flushoutput character is 'off'.
Connected to localhost.
Escape character is '^]'.
hoge
hoge
fuga
fuga
^](Ctrlを押しながら ])
telnet> quit
Connection closed.
タイプした文字がそのまま返されますね。 これが echo プロトコルの仕組みです。 これと同じ働きをするサーバを作ってみましょう。
(追記) (追記ここまで) (追記) (追記ここまで)

TOP >> ネットワークプログラミングの基礎知識 >> echo サーバを作ってみよう (1)

ご意見・ご指摘は Twitter: @68user までお願いします。



AltStyle によって変換されたページ (->オリジナル) /