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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0506
宙目[hspsock]サーバーがフリーズする3未解決


宙目

リンク

2016/5/6(Fri) 18:40:23|NO.75395

何故かサーバーがフリーズしてしまいます。。。


#include "hspsock.as" ;サーバー title "サーバー" adr="127.0.0.1" port=1024 sdim account,100 for bi,0,99 account(bi)="" next account(0)="jitakukeibi" account(1)="shudoinn" c_flg = 0 c_flg2 = 0 sockmake 0,port text = "servertest" s=175 *okclient repeat sockwait 0 cls redraw 1 if stat == 0 : mes "クライアントとの接続に成功しました。":break if stat == 1 : mes "クライアントとの接続に失敗した" if stat == 2 : mes "sockmake命令でサーバーの準備ができていない" if stat == 3 : mes "Socketが受信状態になっていない" if stat == 4 : mes "クライアントとの接続に失敗した" if stat == 4 : mes "クライアントとの接続に失敗した" redraw 0 await 1 loop ipget pos 170,10 : objsize 80,70:button "ソケットを切断",*closesocket ;sockput "aaaa",0 ;==================-------------------------------------===================== repeat redraw 1 color 255,255,255 boxf color 0,0,0 sockcheck 0 if stat==1:pos 0,150:mes "まだデータが到着していません。":sockputb s,0,64,0 sockget kaknin,32,0 gosub *newplayer pos 0,0 mes "MyIP:"+refstr pos 0,50 mes "設定中のポート:"+port pos 0,100 mes "開放中のIPアドレス:"+adr redraw 0 sockwait 0 await 1 loop *closesocket sockclose 0 end *newplayer sockwait 0 for kk,0,99 if kaknin==account(bi){ sucs=1 } sockwait 0 next sockwait 0 if sucs==1:sockputc 1,0 sockputc 0,0 return



この記事に返信する


ひろ

リンク

2016/5/8(Sun) 07:52:35|NO.75422

sockcheck 0
if stat==1:pos 0,150:mes "まだデータが到着していません。":sockputb s,0,64,0

sockget kaknin,32,0

sockcheckは受信データの到着確認でstat=0で受信ありでsockgetができますよ〜ってことです。
受信してもいないのにgetしたりデータが来てないからってsockputb流しまくったりで
いまいちやりたいことが分かりませんが…
サーバだけではなくクライアント側はこれらを考慮して動いているのでしょうか?



宙目

リンク

2016/5/8(Sun) 20:51:45|NO.75429


include "hspsock.as" ;クライアント adr="127.0.0.1":port=1024 sockopen 0,adr,port ;if stat == 4 : dialog "サーバーに接続できなかった":end *login objsize objsize 80,20 input username pos 90,0:button "login",*a stop *a cls repeat redraw 0 color 255,255,255 boxf color 0,0,0 sockgetb money,0,64,0 pos 0,0:mes "Money:"+Money pos 80,0:mes "RichPoint:" await 1 redraw 1 loop *logincheck ^ sockput username,0 sockgetc ok,0 if ok==1:dialog "ログイン成功" if ok==0:dialog "ログイン失敗"


クライアントですw



ひろ

リンク

2016/5/8(Sun) 21:21:04|NO.75430

フリーズの原因はsockgetだと思うのですが…

んと、クライアントからsockopenで接続した後stopしてますよね?
その間await 1でループしながらクライアントにsockputb s,0,64,0を送り込んでるんですが…
あとクライアントから送信されていないのにsockget kaknin,32,0にきますよね。

サーバとクライアントで動きがチグハグなのがよろしくないかと。
方やawait1でループ回しながらがんがん送り付けようとしてますが、
方やstopでまったり待ち構えてます。
この辺りを見直してみてはどうでしょう。



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