1

ソケットを使用してクライアントからサーバーに複数の画像ファイルを送信しようとしています。私の問題は、ストップビット (またはワード) が機能しないことです。

クライアント:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("server",port))
#grab image ...
s.send(imagedata)
s.send("#FINISH#")
s.close()

サーバ:

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(("",port))
s.listen(1)

c,a = s.accept()

while True:
    imagedata = c.recv(1024)

    if not imagedata or "#FINISH#" in imagedata:
        komm.close()
        break

    image = image + imagedata


s.close()
#remove stoppword and save image ...

これは単純な例にすぎませんが、問題を確認できます。2 番目の送信 (クライアント) がイメージデータに文字列を (場合によっては) 追加するため、「#FINISH#」を取得できません。recv の bufsize が原因であることはわかっています。どうすればいいですか?

4

2 に答える 2

1

「ストップ ビット」を送信しないでください。代わりに、まずデータの長さを固定長フィールドで送信してください。

于 2012-09-26T08:54:36.627 に答える
0

本当にそうしたい場合は、受信した完全なデータの「ストップ ビット」を確認してください "#FINISH#" == image[-len("#FINISH#"):]

于 2012-09-26T09:30:59.350 に答える