次の問題があります。コードのチャンクは次のとおりです。
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忘れました-ソケットをブロックしています。