我遇到了字節數組的問題。 我正在創建文件傳輸程序,它通過TCP套接字傳輸二進制數據。 因此,當我從塊中獲取數據時,我將它們保存到臨時容器,然後我必須添加某處以保存整個數據。我已經試過的std ::矢量,但不能很好地工作(或我使用它錯了。)C++字節數組的字符
size_t nbytes = 0;
char buffer[5]; //temporary container.
int result = 0;
std::vector<char> abc;
if (ioctl(sockfd, FIONREAD, (char*)&nbytes) < 0)
{
printf("[-] Error getting available data.\n");
return -1;
}
printf("[*] Bytes available: %lu\n", nbytes);
while(true)
{
if(nbytes > sizeof(buffer))
{
result = recv(sockfd, buffer, sizeof(buffer), 0);
for(int i = 0; i < result; i++)
{
abc.push_back(buffer[i]); //big data causes memory corruption.
}
nbytes -= result;
continue;
}
else if(nbytes <= sizeof(buffer) && nbytes != 0)
{
result = recv(sockfd, buffer, nbytes, 0);
for(int i = 0; i < result; i++)
{
abc.push_back(buffer[i]); //big data causes memory corruption.
}
break;
}
else
{
result = 0;
break;
}
}
printf("Data Received: %s", &abc[0]);
是否有其他人也被「字節數組」徹底混淆了,還是隻有我自己。 – 2013-03-08 12:46:06
我已經習慣了:) – 2013-03-08 12:48:16
我不明白的是使用(非常小)的C風格的數組作爲緩衝區。爲什麼不直接讀入'abc'? – 2013-03-08 12:49:36