システムプログラム(第7週): http-server.c(常に同じ内容を返す HTTP サーバ(forkなし版))

                                       筑波大学 システム情報系 情報工学域
                                       新城 靖
                                       <yas@cs.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~syspro/2012/2012-05-30 /http-server.html
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~syspro/2012/
http://www.coins.tsukuba.ac.jp/~yas/

http-server.c

http-server.cは、HTTP で要求を受け取り、 HTTで常に一定の内容を返すサーバである。 主要部分は、講義資料のメインのページにある。 このページにあるもの、その他の細かい部分である。

print_my_host_port_http()

print_my_host_port_http() は、Web ブラウザや telnet で接続する時のヒントを表示する。
 134:	void
 135:	print_my_host_port_http( int portno )
 136:	{
 137:	    char hostname[100] ;
 138:	        gethostname( hostname,sizeof(hostname) );
 139:	        hostname[99] = 0 ;
 140:	        printf("open http://%s(v6):%d/index.html\n",hostname, portno );
 141:	}
print_my_host_port()参照。

tcp_peeraddr_print()

tcp_peeraddr_print()と同じ。

sockaddr_print()

sockaddr_print()と同じ。

tcp_acc_port()

tcp_acc_port()と同じ。

fdopen_sock()

fdopen_sock()と同じ。 echoのクライアント側 とも同じ。

chomp()

chomp() は、行末の \n\r を削除する関数である。 Perl や Ruby 等のスクリプト言語にも同名で類似の動作を行う関数がある。
 276:	char *
 277:	chomp( char *str )
 278:	{
 279:	    int len ;
 280:	        len = strlen( str );
 281:	        if( len>=2 && str[len-2] == '\r' && str[len-1] == '\n' )
 282:	        {
 283:	            str[len-2] = str[len-1] = 0;
 284:	        }
 285:	        else if( len >= 1 && (str[len-1] == '\r' || str[len-1] == '\n') )
 286:	        {
 287:	            str[len-1] = 0;
 288:	        }
 289:	        return( str );
 290:	}

Last updated: 2012/05/28 16:34:26
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>