HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0625
としあきHSPとCGIの連携2解決


としあき

リンク

2006/6/25(Sun) 20:51:04|NO.1207

 hspsockかhspsockAを使って、CGIとの連携を考えています。
 そこで今、perlを学んでいますが、CGIの本ですと、webプラウザからのデータのやり取り
のことは書いてありますが、HSP、というより、ソケット通信によるCGIとの連携について
書かれていないので、よく分かりません。
 HSPからCGIにデータを送るのは、HSP側はsockputで送り、CGI側は、postでもgetでもいい
ように、

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; }
で、いけると思うのですが、CGIからHSPにデータを送るには、HSP側はsockgetでいいとして、
CGI側は「print」だけで送れるのでしょうか?
 それとも、CGIが加工したデータをwebサーバにファイルとして保存したのを、HSPがsockget
を使って読み込むのでしょうか?
 HSP単体の質問で無いので、気が引けますが、わかる人がいましたらどうか教えてください。



この記事に返信する


Irisawa

リンク

2006/6/26(Mon) 11:29:42|NO.1208

CGIというのはサーバとサーバ内のプログラムの実行/通信手段及びサーバスクリプティング
技術の一種で、サーバがどのようにプログラムを実行するかなどの方法の名称です。
言語などの違いではないため、どの言語で書いても結果的にサーバ側で動作し、標準入力
及び出力を制御できればCGIとして実行できます。
(もちろん、WinサーバならHSP CLでHSPによるCGIも書けます、最適化されていないので
使いにくいですが)

サーバ<->クライアント間は普通のHTTP通信と変わりません。
単純にサーバに対してリクエストを行いそのレスポンスを拾うという形です。

Perlコード(test.cgi)

#!perl print "Content-type: text/plain\n\n"; print "テストです。\n"; exit;

HSP スクリプト

#include "hspsock.as" sdim buf, 32000 sdim a, 64 sockopen 0, "localhost", 80 if stat { dialog "ERROR\nSTAT=" + stat goto *sdover } sockput "GET /test.cgi HTTP/1.0\nHost:???\nUser-Agent: HSP ver3.0\n\n" if stat { dialog "socket error" goto *sdover } wait 10 *wloop await 0 sockget a, 64 if stat { dialog "socket error" goto *sdover } b = peek(a, 0) if b = 0 { goto *sdok } buf += a goto *wloop *sdok mes buf *sdover sockclose stop *bye end



としあき

リンク

2006/6/27(Tue) 19:53:37|NO.1214

 Irisawaさん、ありがとうございます。
 CGIの話ではなく、HTTP通信の話だったんですね。
 perl/CGIの本をいくら読んでも見えてこなかったものが、やっと見えてきました。
 これからHTTPについて調べます。
 本当にありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.