我試圖從客戶端向帶有套接字的服務器發送多個圖像文件。 我的問題是我無法獲得stoppbit(或word)的工作。使用stoppbit的Python套接字
客戶端:
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。我應該怎麼做?
在開始編碼之前,你必須實際設計一個協議。協議應規定接收方如何識別數據的各個部分在哪裏。 –
TCP或您的代碼中沒有「停止位」。不是一個真正的問題。 – EJP