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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0321
わんだsockput で文字列が送信できない?4解決


わんだ

リンク

2009/3/21(Sat) 17:12:25|NO.24018

名前の交換をするP2Pのプログラムを作っています。
サーバー側とクライアント側同じプログラムでやり取りしています。
すでに接続するところまではできており、名前の文字列の交換の部分で躓いています。
sockputでnameという変数を送信し、相手側はsockgetでaitenameに受信した変数をいれています。
通信は成功しているように見えるのですが、実際に受け取った文字列をmesコマンドで表示させて
みると、1725369のような数字になってしまいます。
実際は送っている変数は数字ではなくひらがなだったりするのですが、どこが間違っているので
しょうか。

pos 275,270 :input name
sockput name,0
repeat
sockcheck 0
if stat=0 {
if stat=0 : sockget aitename,64,0:break
if stat!0 :dialog "受信に失敗" :goto *bye
}
cls
pos 10,10:mes name:pos 70,10:mes aitename



この記事に返信する


inovia

リンク

2009/3/21(Sat) 17:44:31|NO.24021

aitenameをsdimで文字列型変数で初期化してみてはどうですか?
あげてくれたサンプルが全く実行できないので、断言できませんが。



inovia

リンク

2009/3/21(Sat) 17:54:07|NO.24022


#include "hspsock.as" //自分で自分を受信するサンプル myname="たなか" getname="" //文字列型変数で初期化 //↑これをコメントアウトすると数字になるかと sockmake 0,24000 //待機 if stat!=0:dialog "err.":end sockopen 1,"localhost",24000 //送信 if stat!=0:dialog "err.":end sockput ""+myname,1 repeat sockwait 0 if stat=0:break wait 5 loop sockget getname,64,0 mes ""+getname+" さんからの受信です"



ORZ

リンク

2009/3/21(Sat) 20:04:54|NO.24028

inoviaさんの指摘どおり、sdimで宣言するか
あらかじめ文字列を代入するなどして変数を文字列型とする必要があります。



わんだ

リンク

2009/3/21(Sat) 21:16:15|NO.24030

ありがとうございました。
長いプログラムから必要な部分だけ抜粋したつもりでしたが、何行か足りなかったようです。
aitename=""
で初期化したところうまく文字列として送受信できました。



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