カレッヂ |
質問者 キタ
投稿日 9/18(火) 00:29:49
[削除] (返信・回答が付いた後にこの質問の削除はできません)
始めまして。 私、Perlの勉強を兼ね、趣味でちょっとしたページを作っていますが、以下のような機能を実現したくて、苦心しています。 CGI内部で、自動的に他のサイトにアクセスしてページデータ(HTML)を受け取り、それを加工してからユーザーの端末に表示する、というようなものです。 これは主にiモードでゲームをする場合などに、パケット代を節約したり、結果の記録を取ったりするために使用していて、一応、何種類かは既に使用できています。 しかし、相手(ゲームサイト)側のサーバー設定によっては、うまく作動しません。エイリアスのような機能で、公開されているURLとは異なる場所にファイルが格納されている場合に、「File Not Found」エラーになってしまうのです。 実際のプログラムは、下のような形です。 use Socket; … $port = getservbyname('http','tcp'); $iaddr = inet_aton("drinkin.lib.net"); $sock_addr = pack_sockaddr_in($port,$iaddr); socket(SOCKET,PF_INET,SOCK_STREAM,0); connect(SOCKET,$sock_addr); select(SOCKET); $|=1; select(STDOUT); print SOCKET "GET / HTTP/1.0\r\n"; print SOCKET "\r\n"; IEなどでは、例えば"drinkin.lib.net"などと入れれば、「本当の格納場所」を意識しなくてもページデータが受け取れます。 しかし、上の形のCGIでは、「本当のアドレス・ディレクトリ」(エイリアスじゃないもの)を指定しないと表示できません(この場合、"/"ではなく"/~drinkin/")。つまり、サーバーの設定が判明しないと、この機能が使えません。 これは、クライアント側(この場合はCGI側)の機能により、解決できるはずだと思うのですが… 非常に長くなってしまいましたが、お分かりになる方がいらしたら、ぜひ、ヒントだけでもご教授下さい。 よろしくお願いいたします。 |
返信(回答)する
Web裏技 |