1

我正在尝试使用套接字将多个图像文件从客户端发送到服务器。我的问题是我无法让 stoppbit(或 word)工作。

客户:

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 ...

这只是一个简单的示例,但您可以看到问题所在。我无法获取“#FINISH#”,因为第二次发送(客户端)将字符串(有时)附加到图像数据。我知道这是因为recv 的bufsize。我该怎么做?

4

2 回答 2

1

不要发送“停止位”,而是先发送固定长度字段中的数据长度。

于 2012-09-26T08:54:36.627 回答
0

如果您真的想这样做,请检查您收到的完整数据中的“停止位”,即 "#FINISH#" == image[-len("#FINISH#"):].

于 2012-09-26T09:30:59.350 回答