【C/C++】URL 分解 DLL【ライブラリ】

【C/C++】URL 分解 DLL【ライブラリ】

OS 開発が スランプ に入ったので、 HTTP 用に URL 分解ライブラリを作ってみた。
何年か前はめっちゃ苦労してた気がするのに、今ではサクッと作れた。だいぶ成長した気がする。(これでも実用レベルには到底及ばないんだろうけども。)
というわけでライブラリ。(ソースコード付き)
h を include して lib リンクして DLL を exe と同じ場所とかにおけば使えます。
myhttp.h と tmyhttp.h の2つのヘッダファイルがありますが、後者は Unicode/マルチバイト文字 対応用です。DLL を使うサンプルも一緒に含めてあるので見ていただければわかるかと…。
詳しい説明書作ろうかと思ったけど、これを作るのが最終目的じゃないんで、しばらくたってから作ろうかと思います。
工夫したところは、分解した後の URL を詰めて格納することでメモリサイズを削減?していることです。
ネット上にころがっているものだと、別々に大きなサイズ確保していたりしてたんで。
ほんとは IE についてる機能使えば分解できるっぽいけど、面倒くさそうなのでやめました。
自分が作ったライブラリなら、構造体定義して、関数呼んで、後はポインタ見るだけ!

// 変数初期化して
TSPLITEDURL SplitedURL;
TCHAR URL[] = _T("scheme://authority/path?query#fragment");

// 変換して
SplitURLT(&SplitedURL, URL);

// 見るだけ
_tprintf(_T("%s:    //%s    %s    ?%s    #%s\n"), SplitedURL.scheme, SplitedURL.authority, SplitedURL.path, SplitedURL.query, SplitedURL.fragment);

最初、【HSP】URL文字列を分解する【モジュール】を移植しようかと思ったけど、一から作ったほうが早かった。
そうそう、以前は書いてなかったけど、参考にした RFC 3986 ↓↓↓
本当に正確にURLの判別をしようとすると、メチャクチャ複雑なURLになり、スキームごとに分けたりすると 100 種類以上のパターンがあsるそうだ。けども、現段階ではそこまではやらない。大変そうだし。
というわけでで今回はこのへんで~ノシ~
↓ブログランキング投票 (クリック) お願いします~


「【C/C++】URL 分解 DLL【ライブラリ】」への2件のフィードバック

  1. int SplitURL(SPLITEDURL *sURL, const char *URL) としたすぐ直後に
    char *iURL = (char *)URL; でconst外しとかシュール

  2. そ、そうなんですか? (自分まだ C 言語よくわかってない…orz
    strcpyとか、ソースを const のポインタにしてたから、そのほうがいいのかなと思ったんですが…。

コメントは受け付けていません。