我有以下问题:这是代码块:
void get_all_buf(int sock, std::string & inStr) {
int n = 1;
char c;
char temp[1024*1024];
bzero(temp, sizeof(temp));
n = recv(sock, temp, sizeof(temp), 0);
inStr = temp;
};
但有时recv
不返回整个数据(数据长度总是小于sizeof(temp)
),只返回它的一部分。写方总是向我发送整个数据(我用嗅探器得到它)。有什么关系?谢谢。
PS我知道,好的方式建议我检查n
(if (n < 0) perror ("error while receiving data")
),但现在没关系 - 这不是我的问题的原因。
PS2我忘记了——它阻塞了套接字。