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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0325
リョウクライアントのエラー3解決


リョウ

リンク

2010/3/25(Thu) 11:55:35|NO.31557

今、サーバー側から”コマンド”を送ると、クライアントの方で動作をする。
というソフトを作っています。

サーバー側

#include "hspsock.as" title "TCPサーバーテスト" *main port=999 ipget mes "IPアドレス:"+refstr mes "ポート"+port+"で接続を待っています..." sockmake 0,port if stat : dialog "Socket error": goto *errbye a=0 repeat sockwait 0 title "CHK="+stat+"/"+a if stat>1 : dialog "Socket error": goto *errbye if stat=0 : break a+ wait 10 loop mes "接続しました。("+refstr+")" wait 100 //////////////////////////////////////////////////////////////////////////////// *sousinmae cls mm="" ; mes "管理コマンド" input mm,100,20 button "送",*sousin stop //////////////////////////////////////////////////////////////////////////////// *sousin sockput mm,0 if stat : dialog "Socket error": goto *errbye mes "コマンド["+mm+"] を送信しました。" wait 100 goto *sousinmae *bye sockclose goto *main ; サーバーを続ける *errbye sockclose mes "終了" stop



この記事に返信する


リョウ

リンク

2010/3/25(Thu) 12:01:50|NO.31558

クライアント側

#include "hspsock.as" title "TCPクライアントテスト" youso = 0 ment_n = 0 itemn = "" , "" , "" , "" , "" itemb = 0 , 0 , 0 , 0 , 0 itemc = 0 , 0 , 0 , 0 , 0 //ここ重要!! 更新可能データ(変数値1)なら、更新される。0なら、更新されない。// itemd = 0 m_cnt = 0 adr="127.0.0.1" port=999 mes adr+"、ポート"+port+"に接続中..." sockopen 0,adr,port if stat : dialog "socket error" : goto *bye mes "接続しました..." wait 50 cls *rep aa=0 repeat sockcheck 0 title "CHK="+stat+"/"+aa if stat=0 : break if stat=2 : goto *bye wait 10 aa+ loop if itemd = 0 { a="" sockget a,64 } if itemd = 1 { sinitem = "" sockget sinitem,64 } if stat : dialog "socket error" : goto *bye /////命令判断プログラムここから if a = "s_end" : end if a = "ment_s" { dialog "只今より\nメンテナンスを\n開始します。",1,"お知らせ" ment_n = 1 wait 1 goto *rep } if a = "item_t" { if ment_n = 1 { mes "新アイテムを受信します。" itemd = 1 youso + 1 wait 1 goto *rep } } if itemd = 1 { if sinitem ! "" { //sinitemに変化があったら条件文実行。 if sinitem = "item_e" { //アイテム受信終了コマンド mes "アイテム受信を終了します。" youso + 1 itemd = 0 wait 1 goto *rep } foreach itemn mes "#"+m_cnt+":"+itemn(m_cnt) if itemn(m_cnt) = "" { itemn(m_cnt) = sinitem sinitem = "" mes "新アイテム ["+itemn(m_cnt)+"] を受信しました。["+m_cnt+"]" youso + 1 m_cnt = 0 } else { m_cnt + 1 wait 10 loop } } wait 1 goto *rep if a = "ment_e" { dialog "大変お待たせ\n致しました。\nメンテナンスを\n終了します。",1,"お知らせ" wait 1 goto *rep } wait 1 goto *rep /////命令判断プログラムここまで *bye mes "終了" sockclose stop


このようなスクリプトになっているのですが、
"ment_s"を送信した後、"item_t"を送信し、アイテム名を送信すると、
『○○○を受信しました。』という文字が出て、
"item_e"を送信すると、『アイテム受信を終了します。』という文字が表示される。

というプログラムを作りたいのですが、実行すると、アイテム名を入力して送信すると、
『新アイテムを受信します。』という文字が出てきます。

どこが間違っているのか、全然分かりません。

分かる方、いらっしゃいましたら、回答、宜しくお願い致します。



SYAM

リンク

2010/3/25(Thu) 13:00:53|NO.31559

クライアント側で、a が"item_t" のままになってるからです。

sinitem = "" のときに a も変更しないといけなさそうですね。



リョウ

リンク

2010/3/26(Fri) 15:19:00|NO.31579

有難う御座います!

お陰で、正常に作動しました!



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