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

前へ << POP3 クライアントを作ってみよう(3) echo サーバを作ってみよう (2) >> 次へ

サーバとは

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

サーバとは特定のポートを見張っているプログラムのことです。 クライアントが 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 プロトコルの仕組みです。 これと同じ働きをするサーバを作ってみましょう。
前へ << POP3 クライアントを作ってみよう(3) echo サーバを作ってみよう (2) >> 次へ