Proxyサーバーを介するネットワーク通信の方法がわからないと、学校でデバッグを行うことができません。何もできないのです。これは困りました。
そして今日、「まてよ?じゃあ私の愛用ブラウザCoolNovoたんはどうやってネットワーク通信してるんだ?いっそのことCoolNovoたんに教えてもらえばいいんじゃね?」という発想に、やっとのことで至ったのでありました。
というわけでさっそくWiresharkをインストール。パケット通信ログをしばらく眺めると…( ´,_ゝ`)クックック・・・( ´∀`)フハハハハ・・・( ゚∀゚)ハァーハッハッハッハ!!
謎は…全て解けた!!
まず、方針としては『Proxyサーバーを介する』というよりも、『Proxyサーバーと通信をする』という方向で考えなければいけなかったのです。
というわけで、SOCKADDR_IN構造体の値を設定する際にProxyサーバーに接続するものと思って設定する必要があります。
SOCKADDR_IN hostinfo;
hostinfo.sin_family = AF_INET;
hostinfo.sin_port = htons(short(/*Proxyサーバーのポート番号*/) );
ULONG & ref = hostinfo.sin_addr.S_un.S_addr;
ref = inet_addr(/*ProxyサーバーのIPアドレス*/);
char buff[1024];
sprintf(buff, "%s\r\n%s\r\n%s\r\n\r\n",
"GET /*WEBページのフルパス*/ HTTP/1.1",
"Host: /*WEBページのフルパスのドメイン名の部分*/",
"Proxy-Authorization: Basic /*ユーザーID:パスワード をbase64エンコードした文字列*/");
send(socket, buff, strlen(buff), 0);
base64エンコードについてはググりましょう。
…と、Proxyサーバーを介する環境であることが事前にわかっている場合にどうすればよいかということはわかったのですが、そもそもその環境がProxyサーバーを介さなければならない環境なのかどうかということはどうやって知れば良いのでしょうか。
インターネットオプションのLANの設定でProxyサーバーを介するように設定しているわけですから、その情報の取得方法が解かればProxyサーバーのIPアドレスやポート番号も調べることができそうです。
これが今後の課題ですね。