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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0507
ゆっけHSPでチャットルーム10未解決


ゆっけ

リンク

2011/5/7(Sat) 15:15:47|NO.39026

HSPを使って、オンラインゲーム等のロビーに使える、チャットルームを作りたいと思っています。
サーバー側にCGIなどを使って、無料のレンタルサーバー等で稼動したいと考えているのですが、
HSPからCGIのデータを読み込むことは可能でしょうか?

例:
HSPからCGIにチャットに入ったことを伝える。IPアドレスを書き込む。
CGIからHSPに現在ロビーにいる人のIPアドレス等の情報を送る。
HSPでhspsock等を使い相手とp2p接続する。

このようなプログラムを組みたいのですが、
HSPでCGIを操るのに、どこか参考になるサイトはありますでしょうか?



この記事に返信する


Cookies

リンク

2011/5/7(Sat) 15:35:30|NO.39027

hspinetだと、HTTPのPOSTリクエスト発行ができるnetrequest_postがあります。
それを使って、


netinit
if stat : dialog "ネット接続できません。" : end

; URLを指定
neturl "http://example.com/hspchat/"

prm = "myip=127.0.0.1"
netrequest_post "hspchat.cgi",prm
*main
//結果が返るまでのループ
netexec res
if res > 0 : goto *comp
if res < 0 : goto *bad
await 50
goto *main
*bad

//エラー処理
stop
*comp
netgetv ip//CGIからの情報をipへ取得。
mesbox ip
stop
みたいにしてはどうでしょう。
ほとんどは、sample\hspinet\twitter_send.hspからのコピペです。あわせてみてみてください。
後付け足したりしたのは、あってるかどうかわかりません。書いただけで、実行したりしてませんので。

「//エラー処理」のところには自分で処理を入れてください。
URLやCGI名はもちろん変えてくださいよ。
その際に、neturlにファイル名まで指定しないよう気をつけてください。

CGIには、「myip=127.0.0.1」がいってると思います。
あとは普段通り、CGIで返したい情報を表示するようにすればよろしいかと。
CGIについてはあまり知らないので、よくはわかりませんが。



ORZ

リンク

2011/5/7(Sat) 15:37:11|NO.39028

いまいちスレ主のじつりきがわかんないのでなんとも。PerlとかPHPには明るいの?
HSPも両方モリモリかけるけど通信部分だけワカラン、っつーくらいなら俺が貼ろうとしてる
ページの内容は稚拙すぎて参考にならない可能性が大。サンプルをフォルダから漁るよろし。



Cookies

リンク

2011/5/7(Sat) 15:39:35|NO.39029

ありま。
すいません。preを忘れちゃいました。
なんとか読んでください。



ゆっけ

リンク

2011/5/7(Sat) 22:53:00|NO.39048

ありがとうございます。
hspinetを使ってみようと思います。
そこでなのですが、下記のようなCGIスクリプトを用意したのですが、
下記のようなCGIスクリプトに、HSPからアクセスし、
データを読み取り、書き込むことは可能でしょうか?


#!/usr/local/bin/perl # 掲示板 require "cgi-lib.pl"; print "Content-type: text/html; charset=Shift_JIS\n\n"; # フォーム部分を表示する print <<EOF; <html> <body> <h2>一行掲示板</h2> <form method="post" action="bbs.cgi"> メッセージ:<input type="text" name="message" size="60"> <input type="submit" value="送信"> </form> <hr> EOF &ReadParse(*form); # フォームの値を取得 $message = $form{"message"}; # ログファイル読み込み open(IN, "bbs1.txt"); @log = <IN>; close(IN); # メッセージが入力されているときは書き込み処理を行なう if ($message ne "") { # ログ先頭にメッセージを格納 unshift @log, "$message\n"; # ログファイルに書き込み open(OUT, "> bbs1.txt"); print OUT @log; close(OUT); } # ログ表示 foreach $data (@log) { chop $data; print "$data<br>\n"; } print "</body>\n</html>\n";



ORZ

リンク

2011/5/7(Sat) 23:01:35|NO.39049

可能。



Cookies

リンク

2011/5/7(Sat) 23:04:17|NO.39050

うぅ。Perlか…PHPしかわからん。
何となくやりたいことはわかりました。(そのつもりです。)
bbs1.txtを読み込み、
フォームの「message」に何か入ってたらそれを追記する、ってことですよね?

でしたら、さっきのpre抜けスクリプトを、
prm = "message=TEST"
netrequest_post "bbs.cgi",prm
みたいにすれば書き込めるでしょうし、
読み込みは、読み込み用のCGIを用意するか、
もしbbs1.txtに直でアクセスできるのだったら、それをとってくるような感じでどうでしょう。
txtを直で落とすなら、一番簡単なのはnetload命令でしょう。hspinetです。



ORZ

リンク

2011/5/7(Sat) 23:09:02|NO.39051

netrequest_post でF1をスイッチオン



backdrop

リンク

2011/5/22(Sun) 00:17:54|NO.39333

Perl/CGIだったら次のようにフォームデータを受け取るとする

if( $ENV{'REQUEST_METHOD'} eq 'POST' ){ read( STDIN, $query, $ENV{'CONTENT_LENGTH'}; }else{ $query = $ENV{'QUERY_STRING'}; } foreach $pair ( split( /&/, $query ) ){ ( $id, $value ) = split( /=/, $pair ); $value =~ tr/+/ /; #必要に応じて次の日本語変換処理を入力。 $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; #XSS防止には次の処理を入力 $value =~ s/</</g; $value =~ s/>/>/g; $value =~ s/&/&/g; $value =~ s/"/"/g; $FORM{&id} = $value; }
このCGIを実行すると次のクエリが送信されたとき
id1=value1&id2=value2

$FORM{'id1'}にvalue1の値が、$FORM{'id2'}にvalue2の値が代入されます。
これを利用してスクリプトを組んでください。
ちなみに送信するクエリはhspinetでnetrequest_postの第2パラメータで指定するほかに

netrequest_get "URL?クエリ"
みたいなこともできなくはありませんがお勧めしません



backdrop

リンク

2011/5/22(Sun) 00:29:13|NO.39334

やりにくいな〜
↑のCGI

誤: $value =~ s/</</g; $value =~ s/>/>/g; $value =~ s/&/&/g; $value =~ s/"/"/g; 正: $value =~ s/</&lt;/g; $value =~ s/>/&gt;/g; $value =~ s/&/&amp;/g; $value =~ s/"/&quot;/g;
&記号の自動変換しないんだなこの掲示板
ヒント:実際にクエリ内容をHSPで取得するなら
CGIが受け取ったデータをRSS形式で出力するのがいいかもしれません。

それからゆっけさんのCGIスクリプト

&ReadParse(*form);
は次ように書き換えられます。
この場合はReadParseサブルーチンを自分で用意し
formハッシュへの書き込みを先ほどの私のCGIスクリプトで行ってください

#最近はこの書き方でも通じるところが多いです ReadParse(); #これに合わせて削除する部分 require "cgi-lib.pl"; #新たに追加する部分 sub ReadParse() { #先ほどの私のCGIスクリプトを貼り付け } #書き換え:chop→chomp



piro

リンク

2011/8/28(Sun) 16:19:38|NO.40903

$val =~ s/\\/¥/g;
$val =~ s/'/’/g; を追加するとどうなるんですか?



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