|
 |
|
|
2015/1/28(Wed) 23:21:48|NO.67149
ファイルを送受信するやつです
サーバー側
*set
#include "hspsock.as"
fad=""
fs=0
sdim fd,1
sockmake 0,50001
if stat!0:dialog "エラーが発生しました\nエラーコード:"+stat+"":end
*manu
screen 0,300,400
objsize 300,100
button "ファイルをロード",*load
button "ファイルを送信",*send
mes "送信するファイル"
mesbox fad,300,100
mes "送信するサイズ "+fs+"Bite"
stop
*load
dialog "*",16,
if stat!1:goto *manu
fad=refstr
exist fad
fs=strsize
if strsize=0:dialog "ファイルが存在しません"
goto *manu
*send
sockput ""+fs+""
wait 100
screen 1,300,200
repeat fs
sdim fd
bload ""+fad+"",fd,1,cnt
sockputb fd,,1,0
color 225,225,225
boxf
color
pos 0,0
mes ""+cnt+"/"+fs+""
wait 1
loop
GOTO *manu
クライアント側
*set
#include "hspsock.as"
fad=""
fs=0
sdim fd,1
sockopen 0,"xxxxxxxxx",50001
if stat!0:dialog "エラーが発生しました\nエラーコード:"+stat+"
repeat
wait 1
sockwait 0
if stat=0:break
loop
sockget fs
mes fs
screen 1,300,200
repeat fs
sockwait 0
repeat
if stat=0:break
wait 1
loop
sdim fd,1
sockgetb fd,,1,0
bsave "0.bmp",fd,1,cnt
color 225,225,225
boxf
color
pos 0,0
mes ""+cnt+"/"+fs+""
wait 1
loop
です
クライアントが動作してないようです

| |
|
|
2015/1/31(Sat) 19:18:26|NO.67190
hspsock自体全く使った事無いので間違ってるかも知れませんが…
・「sockwait」はサーバー側が、クライアント側の接続を待つ為の命令のようです。
・クライアント側で、サーバーからの送信を待つには「sockcheck」を使うようです。
・クライアント側、「sockget」で受け取った「fs」は文字列型のようですが、
そのままrepeatの引数にして大丈夫なのでしょうか。
・ソケット切断の「sockclose」が見当たらないのですが、抜粋したソースだからでしょうか。
送受信に関しては上記のような点が気になりました。
|
|
|
2015/2/1(Sun) 18:59:23|NO.67209
はあ、そうなのですね
ちょっと勘違いしていたようです
そこで修正してみたのですが
クライアント側でエラーが出ます
ただ、bsave命令なのですが
bsaveで指定したファイル名が存在しなかったら
新しく作成されるはずなのですが?
サーバー
*set
#include "hspsock.as"
fad=""
fs=0
sdim fd,1
sockmake 0,50001
if stat!0:dialog "エラーが発生しました\nエラーコード:"+stat+"":end
*manu
screen 0,300,400
objsize 300,100
button "ファイルをロード",*load
button "ファイルを送信",*send
mes "送信するファイル"
mesbox fad,300,100
mes "送信するサイズ "+fs+"Bite"
gosub *wat
stop
*load
dialog "*",16,
if stat!1:goto *manu
fad=refstr
exist fad
fs=strsize
if strsize=0:dialog "ファイルが存在しません"
goto *manu
*send
sockput ""+fs+""
repeat
wait 1
sockcheck 0
if stat=0:break
loop
screen 1,300,200
repeat fs
sdim fd
bload ""+fad+"",fd,1,cnt
sockputb fd,,1,0
color 225,225,225
boxf
color
pos 0,0
mes ""+cnt+"/"+fs+""
repeat
if stat=0:break
wait 1
loop
wait 1
loop
GOTO *manu
*wat
repeat
wait 1
sockwait 0
if stat=0:break
loop
dialog "接続"
goto *manu
クラ
*set
#include "hspsock.as"
fad=""
fs=0
sdim fd,1
sockopen 0,"192.168.0.2",50001
if stat!0:dialog "エラーが発生しました\nエラーコード:"+stat+"
dialog "1"
repeat
wait 1
sockcheck 0
if stat=0:break
loop
dialog "2"
sockget fs
sockput "OK"
mes fs
screen 1,300,200
repeat fs
sockcheck 0
repeat
if stat=0:break
wait 1
loop
sdim fd,1
sockgetb fd,,1,0
bsave "0.bmp",fd,1,cnt
sockputc 1,0
color 225,225,225
boxf
color
pos 0,0
mes ""+cnt+"/"+fs+""
wait 1
loop

| |
|
|
2015/2/1(Sun) 23:43:27|NO.67218
スクリプトエディタでF1キーを押すことで、その命令のヘルプが出るはずですがご存知無いのでしょうか?
出てこないようであればファイルが壊れているのかも知れませんので、再インストールしてみましょう。
HSP付属エディタ以外をお使いの場合は、キーマクロなどで呼び出せるようにしといた方が良いです。
もし、そのような機能も無いエディタをお使いの場合は乗り換えをお勧めします。
で、bsaveのヘルプによりますと
>ファイルのオフセット値を指定すると、その値だけファイルの先頭からずらした場所からが操作の対象になります。
>bsave命令でオフセットを指定すると、 ファイルの先頭から任意のサイズを過ぎた場所からセーブを行なうことが可能です。
>(この場合は、それオフセットより前のファイル内容は変化しません。
>また、オフセット指定時はファイルが存在しない場合エラーとなります。)
とあります。最後の行です。
|
|