---------- H8MAX側変更点 ---------------------------------------
変更しなくていいところは灰色で、変更個所は黒であらわしています.
char* RecieveRequest( int
Socket ) ;
int ServletAnswer( int Socket, char* RequestStr ) ;//追加
int
GetNumber(char*RequestStr,char*Name);
void SetADValue( char*
Contents ) ;
void testpat( int n ) ;
..
..
..(途中省略)
..
/****************************************************************
機能要約
telnet の応答
機能
引数
戻り値
注意
*****************************************************************/
int Communication( int Socket )
{
char* RequestStr ;
printf( "\nhttpd start
port=%d\n",TELNET_PORT ) ;
fflush( stdout ) ;
//TimeOut
処理をするためにノンブロッキングモードにする
fcntl( Socket, F_SETFL,
O_NONBLOCK);
RequestStr =
RecieveRequest( Socket ) ;
if( RequestStr == NULL
) {
return( -1
) ;
}
// RequestStr に、sevlet の文字が含まれているならば、データ文字列
// だけを返すようにする。
if( strstr( RequestStr, "servlet" ) == NULL ) {
Answer( Socket, RequestStr ) ;
}
else {
ServletAnswer( Socket, RequestStr ) ;//追加
}
return( 0 ) ;
}
/*****************************************************************
機能要約 サーブレット用の応答
機能
引数
戻り値
注意
******************************************************************/
int ServletAnswer( int Socket, char* RequestStr )
{
int Length ;
int LedNumber;
int LcdNumber;
char Contents[ 100 ] ;
// RequestStr の内容を解釈して送り出すデータを決定する
// (現在は、ADの値を返すだけ)
sprintf( Contents, "ad0=%d ad1=%d", AdConv(0), AdConv(1));
Length = strlen( Contents ) ;
//コンテナヘッダーを出力
Sockprintf( Socket, "HTTP/1.1 200 OK\n" ) ;
Sockprintf( Socket, "Accept-Ranges: bytes\n" ) ;
Sockprintf( Socket, "Content-Length: %d bytes\n", Length ) ;
Sockprintf( Socket, "Connection: close\n" ) ;
Sockprintf( Socket, "Content-Type: text/html;charset=EUC-JP\n" )
;
Sockprintf( Socket, "Content-Language: euc-jp\n" ) ;
Sockprintf( Socket, "\n" ) ;
write( Socket, Contents, Length );
return( 0 ) ;
}
..
..
..(途中省略)
..
/******************************************************************
機能要約
コマンド文字列を受け取る
機能
引数
戻り値
注意
******************************************************************/
char* GetCommand( int Socket )
{
uint uintData ;
uchar Data ;
static char Buffer[ 200 + 1 ] ;
int BufPtr ;
BufPtr = 0 ;
while( 1 ) {
uintData =
GetDataWithTimeOut( Socket, 10000 ) ;
if(
uintData == NO_DATA ) {
printf("timeout\n");
return( NULL ) ;
}
Data =
uintData ;
if( Data
< ' ' ) {
Buffer[ BufPtr ] = 0 ;
return( Buffer ) ;
}
Buffer[
BufPtr ] = Data ;
BufPtr ++ ;
if( BufPtr >= 200 ) {
return( NULL ) ;
}
}
}