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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0224
やまぎ応答しなくなる4解決


やまぎ

リンク

2013/2/24(Sun) 23:01:46|NO.52567


#include "hspsock.as" #define EM_LINESCROLL $B6 //任意の方向にスクロール #define EM_GETLINECOUNT $BA // 行数取得 /*初期化宣言*/ adr="127.0.0.1" port=25565 mozi="接続しました" sousinn="" /**/ ipget *gamenn_main objsize 100,20 button "鯖を立てる",*server_name button "鯖に入る",*client_main button "自分のIPをみる",*ipconfig stop *server_name name="" mes "自分の名前:" input name button "完了",*server_main_sav stop *server_main_sav cls pos 100,0 mesbox sousinn,540,400,0 *server_main title ""+refstr+"でサーバーを立てています" sockmake 0,port if stat : dialog "Socket error": sockclose : end repeat sockwait 0 if stat>1 : dialog "Socket error": sockclose : end if stat=0 : break await 0 loop /* mes "接続しました。("+refstr+")" */ await 10 comennt="" pos 100,400 wait 500 objsize 540,20 input comennt,,, objsize 540,20 button "送信",*sever_sousinn stop *sever_sousinn mm=""+comennt+","+name+"" sockput mm,0 if stat : dialog "Socket error": sockclose : end ; sousinn += "\n"+name+":"+comennt+"" objprm 0,sousinn sockclose hMesbox = objinfo(stat, 2) sendmsg hMesbox,EM_GETLINECOUNT,0,0 line_end=stat // 任意の方向にスクロール移動 (EM_LINESCROLL) sendmsg hMesbox,EM_LINESCROLL,0,line_end goto *server_main *client_name mes "自分の名前:" input name button "完了",*client_main stop *client_main cls mes "相手のIPアドレス:" : input adr,200,20 mes "ポート番号:" : input port,200,20 mes "自分の名前:" : input name,200,20 button gosub "接続",*gamenn_cls repeat if clss=1{ await 20 sousinn="" pos 100,0 mesbox sousinn,540,400,0 goto *client_zyusinn clss=0 } await 20 loop *client_zyusinn repeat sockopen 0,adr,port if stat : dialog "socket error" : sockclose : end repeat sockcheck 0 if stat!=0 : break await 0 loop title ""+adr+"ポート"+port+"に接続中..." a="" name="" mozi="" comennt="" comennt_sousinn="" sockget a,200,0 if stat : dialog "socket error" : sockclose : end split a,",",comennt,name sousinn += "\n"+name+":"+comennt+"" objprm 0,sousinn sockclose // 行数取得 hMesbox = objinfo(stat, 2) sendmsg hMesbox,EM_GETLINECOUNT,0,0 line_end=stat // 任意の方向にスクロール移動 (EM_LINESCROLL) sendmsg hMesbox,EM_LINESCROLL,0,line_end await 10 loop *ipconfig //IPアドレスとグローバルIP取得 #module #include "hspsock.as" #define global urlHTTP "checkip.dyndns.org" // 接続URL #define global fileHTTP "/" // 接続ファイル #define global portHTTP 80 // ポート #define global timeHTTP 1000 // タイムアウト用 #define global sizeHTTP 1024 // パケットサイズ #define global tagHTTP "body" // 読み出し前タグ #define global keywordHTTP "Current IP Address:" // 読み出し前キーワード #defcfunc getIP /*ソケット生成*/ sockopen 0,urlHTTP,portHTTP if (stat != 0) { dialog "接続エラーです", 1, "エラー" : stop } /*パケット送信(GETメソッド)*/ sockput "GET "+fileHTTP+" HTTP/1.0\nHost:???\nUser-Agent:???\n\n" if (stat != 0) { dialog "送信エラーです", 1, "エラー" : stop } /*変数初期化*/ dim flg, 1 dim size, 1 dim p, 1 sdim buf, sizeHTTP, 2 /*取得ループ*/ repeat timeHTTP /*パケット取得部分*/ sockget buf(0), sizeHTTP if (stat != 0) { dialog "('A`)", 1, "エラー" : stop } /*内容確認*/ if (peek(buf(0), 0) == 0) { /*受信終了したなら*/ : flg = 1 break } : buf(1) = buf(1)+buf(0) await 100 loop /*ソケット解放*/ sockclose 0 /*フラグ判定*/ if (flg != 0) { /*受信成功したなら*/ /*パケットのヘッダから*/ : p = instr(buf(1), 0, "\n\n") : buf(1) = strmid(buf(1), p, strlen(buf(1))) : p = instr(buf(1), 0, "<"+tagHTTP+">") : buf(1) = strmid(buf(1), p+strlen(tagHTTP)+2, strlen(buf(1))) : p = instr(buf(1), 0, "</"+tagHTTP+">") : buf(1) = strmid(buf(1), 0, p) : p = instr(buf(1), 0, ""+keywordHTTP+"") : buf(1) = strmid(buf(1), p+strlen(keywordHTTP), strlen(buf(1))) } else { /*受信失敗したなら*/ : buf(1) = "" } return buf(1) #global ipget mes "IPアドレス:"+refstr mes "グローバルIP:"+getIP() stop *gamenn_cls cls clss=1 return
このプログラムでチャットができます(一方通行)が鯖に入るを押してコメントが来るのを
待っていると応答なしになってかたまります
しかしサーバーからのコメントが来るとちゃんと更新されるのですが
クライアントの方からもチャットを打てるようにしたいと思っているので
応答なしにならないようにするにはどうすればいいですか?



この記事に返信する


@key

リンク

2013/2/25(Mon) 00:22:52|NO.52568

待っている処理にwaitを挿せばいいと思う



やまぎ

リンク

2013/2/25(Mon) 02:11:19|NO.52570

@keyさん

どこにwaitをおけばいいですか?
初心者なんでわからないです



KA

リンク

2013/2/25(Mon) 06:09:59|NO.52571

初心者なら無理に全てを含めるのではなく、各機能が単独で動作出来るの
か確認してください。それと書式も統一性が無いので、見直しましょう。



やまぎ

リンク

2013/2/27(Wed) 18:05:09|NO.52605

@keyさん

やっとwaitの位置がわかりました

ありがとうございました



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