2016-06-15 8 views
0

私はHTTPヘッダーを解析するアプリケーションを作成しました。 POSTメソッドでHTTPパケットをフィルタリングするより良い方法があるかどうかを見つけようとしています。私が達成しようとしているのは、すべてのPOSTメソッドパケット文字列が "POST"で始まることを知っているという事実を利用することです。文字列の最初の単語を検索して保存し、それに条件を使用する方法はありますか?私のコードは動作しますが、私は "POST"のためにパケット全体を検索しない方がいいでしょう。例えば、GETパケットの中に "POST"という単語があるときはわかりません。文字列バッファ内の特定の単語を見つける最適な方法C

char re[size_data]; 
    strncpy(re,data,size_data); //data is the buffer and size_data the buffer size 
    char * check; 
    check = strstr(re,"POST"); 
    if(check!= NULL) 
    { *something happens* } 

答えて

2

あなただけのパケットの先頭に文字列「POST」をチェックしたいので、あなたは、例えば、strncmp機能を使用することができます

if (strncmp(re, "POST ", 5) == 0) 
{ 
    // this is a POST packet 
} 

コメントで@jxhで述べたように、それは文字列の長さ未満size_dataでない限り、文字列を終了ヌルないので、strncpyは、問題が発生することがあります。文字列が正しく終了されていることを確認するには、コードは、私が探していたまさにでした。この

char re[size_data+1]; 
strncpy(re,data,size_data); 
re[size_data] = '\0'; 
+0

のようになります。どうもありがとう。 – EdTed

+0

'size_data'が4より小さい場合にも問題があります。 – jxh

関連する問題