0
我有客戶端和服務器來傳輸圖像。客戶端發送圖像二進制和服務器接收它們並存儲。我用buff向量來存儲二進制文件。已發送的字節數不等於C++ Socket中接收的字節數Prg
客戶端:
bytes_sent = send(socketfd, &fileSize, sizeof(fileSize), 0);
bytes_sent = send(socketfd, &fileContents[0], fileSize, 0);
服務器端:
bytes_received = recv(new_sd, &temp.imageSize, sizeof(temp.imageSize), 0);
bytes_received = recv(new_sd, &buff[0], buff.size(), 0);
if(bytes_received < 0)
break; //Error
if(bytes_received == 0)
break; //Disconnect
img.write(&buff[8], temp.imageSize);
印刷bytes_received和bytes_sent,結果:bytes_received = 8 + bytes_sent
。我用vim(或記事本)打開了創建的圖像,在圖像的開頭有額外的字符/00/00/00/00/00/00/00/00
。爲了解決這個問題,我把buff [0]改成了buff [8],現在收到的圖像效果很好。
我如何接收沒有這些8/00字符的二進制文件?