2

NKEを使用してKEXTを作成し、httpの要求と応答を読み取ろうとしています。ソケットフィルターを登録しました。データを取得するたびに、次のようなコードを使用してmbufを出力しています。

unsigned char *dataString = mbuf_data(*data);
for (size_t i = 0; i < mbuf_len(*data); i++)
{
    printf("%c", dataString[i]);
}
printf("\n-------------\n");

ログからhttpリクエストと一部のレスポンスデータを読み取ることはできますが、 HTMLコンテンツを表示できません。mbufを正しく読んでいないのか、それとも他の問題なのか疑問に思いました。

4

1 に答える 1

5

mbufは実際にはメモリバッファのリンクリストであるため、リストの先頭のみを検査している場合は、すべてのデータを表示できない理由である可能性があります。あなたはこのようなことをしたいです:

for (mbuf_t mb = *data; mb; mb = mbuf_next(mb))
{
  unsigned char* dataString = mbuf_data(mb);
  size_t len = mbuf_len(mb);
  for (size_t i = 0; i < len; i++)
  {
    printf("%c", dataString[i]);
  }
}
printf("\n-------------\n");
于 2012-10-22T11:39:42.057 に答える