我在接收二進制數據到我的服務器(python)時遇到了麻煩。 看來,操作系統(WIN7)在沒有「許可」的情況下在幾個數據包中發送大數據,所以當我試圖從客戶端(C++)發送二進制數據時,我必須做一些操作來組合所有數據。 我嘗試了幾種方法,但都沒有工作。python套接字接收二進制數據
這裏是發送部分(C++ - 肯定的正常工作):
sendbuf = "[email protected]" + ReadThisFile("C:\\0x3z4.jpg") + "@"; // buffer should be "[email protected]<Image Data>@"
// ReadThisFile returns string with binary data from file
vector<char> vect(sendbuf.begin(), sendbuf.end()); // Vector with the image data
iResult = send(ConnectSocket, &vect[0], vect.size(), 0); // Sending The Image
這裏是接收部分(Python的 - 帶螺紋的函數 '處理程序' 的一部分):
while True:
Buffer = Sock.recv(self.BufferSize)
if Buffer[0:4] == "2011":
self.Print(ADDR[0] + " > 2011 > Capture Screen Response.")
# Save Image
Path = datetime.now().strftime("Information\\" + ADDR[0] + "@" + self.Clients[Index].computerName + "\\CaptureScreen.Files\\" + "%d-%m-%Y-%H-%M-%S.png")
f = open(Path,'wb')
f.write(Buffer[5:-1])
data = ""
# I tried to receive data till i'll find the eof
while True:
data += Sock.recv(4096)
if data.find("EOF"):
break
f.write(data)
這問題來自Trojan項目,我和我的兩位朋友正在爲我們的課程工作。 謝謝。
對不起的長度,你可以嘗試改寫這個?這不是很清楚。 – 2013-05-09 17:11:00