次へ: 課題4:HTTPクライアントの作成
上へ: 課題3:inetdを使用しないサーバプログラムの作成
戻る: 実行結果
inetdを使用する場合、課題2でサンプルプログラム(1)を実行する際に行ったように/etc/services、/etc/inetd.confにサービスネーム、プログラムを登録することで、クライアント側からの接続欲求があった際にinetdがソケットを作成し、clientからの接続を受け入れる。つまり、サーバ側のプログラムにはソケットを作成するための記述は必要ない。readやwriteを行う場合の第一引数には0を指定する。クライアント側のプログラムではgetservbyname関数を使用し、SERVICE_NAME
、PROTOCOLにマッチするものを/etc/servicesから探し、servent構造体を取得する。servent構造体のメンバs_portにサーバ側プログラムで利用されるport番号が格納されているので、それを用いてconnectを行う。
一方デーモン型のプログラムでは、サーバ側のプログラムではソケットを作成し、bind、listen、acceptを行う必要がある。クライアント側のプログラムでは使用するport番号を明示的に指定しなければならない。
Shimabukuro Takuya
平成18年12月9日