INTERNET_INVALID_PORT_NUMBER
GetHttpConnection
関数の第2引数のデフォルト引数が
INTERNET_INVALID_PORT_NUMBER
になっているのは理解しがたい面がある。
ここは本来は
INTERNET_DEFAULT_HTTP_PORT
であるべきである。しかし、どちらを使っても同じように動作はするようである。
資料
// Internet APIs // manifests #define INTERNET_INVALID_PORT_NUMBER 0 // use the protocol-specific default #define INTERNET_DEFAULT_FTP_PORT 21 // default for FTP servers #define INTERNET_DEFAULT_GOPHER_PORT 70 // " " gopher " #define INTERNET_DEFAULT_HTTP_PORT 80 // " " HTTP " #define INTERNET_DEFAULT_HTTPS_PORT 443 // " " HTTPS " #define INTERNET_DEFAULT_SOCKS_PORT 1080 // default for SOCKS firewall servers. ¶WinInet.hはPlatForm SDKのincludeディレクトリにある。
INTERNET_INVALID_PORT_NUMBER
の「
use the protocol-specific default
」というコメントからすると、これを指定すると、使ったプロトコルに応じて「
INTERNET_DEFAULT_***_PORT
」のどれかになるということのようである。
すなわち、
INTERNET_INVALID_PORT_NUMBER
が
Get
Http
Connection
関数で使われた場合は
INTERNET_DEFAULT_
HTTP
_PORT
が使われるということである。
こういう当惑させるようなことが起こるのは「
INVALID
」が実にまぎらわしいネーミングになっていることによる。
INVALID
(無効の)どころか実際はその逆に何にでも使える万能の指定なのである。
- 2005/10/01 -
WinInetの使い(win_0452)
CInternetSession,GetHttpConnection,OpenRequest,AddRequestHeaders,SendRequestなどの使用例。
東洋的な精神風土、禅の世界などには「空(くう)」という考え方がある。何もない「空」は「無」ではなく、何にでもなりうる、何にでも変わりうるという点では、積極的な意味を持つ観念である。さしずめ、ここの
INVALID
もそれに近いのかもしれない。