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

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

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~syspro/2020/2020-06-13 /http-server.html
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~syspro/2020/
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 で接続する時のヒントを表示する。
 139:	#define HOST_NAME_MAX 256
 140:	void
 141:	print_my_host_port_http( int portno )
 142:	{
 143:	        char hostname[HOST_NAME_MAX+1] ;
 144:	
 145:	        gethostname( hostname,HOST_NAME_MAX );
 146:	        hostname[HOST_NAME_MAX] = 0 ;
 147:	        printf("open http://%s:%d/index.html\n", hostname, portno );
 148:	}
 149:	
print_my_host_port()参照。

chomp()

chomp() は、行末の \n\r を削除する関数である。 Perl や Ruby 等のスクリプト言語にも同名で類似の動作を行う関数がある。
 150:	char *
 151:	chomp( char *str )
 152:	{
 153:	        int len ;
 154:	
 155:	        len = strlen( str );
 156:	        if( len>=2 && str[len-2] == '\r' && str[len-1] == '\n' )
 157:	        {
 158:	                str[len-2] = str[len-1] = 0;
 159:	        }
 160:	        else if( len >= 1 && (str[len-1] == '\r' || str[len-1] == '\n') )
 161:	        {
 162:	                str[len-1] = 0;
 163:	        }
 164:	        return( str );
 165:	}
 166:	

tcp_sockaddr_print()

tcp_sockaddr_print()と同じ。

tcp_peeraddr_print()

tcp_peeraddr_print()と同じ。

sockaddr_print()

sockaddr_print()と同じ。

tcp_acc_port()

tcp_acc_port()と同じ。

fdopen_sock()

fdopen_sock()と同じ。 echoのクライアント側 とも同じ。
Last updated: 2020/06/04 14:53:19
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>