c++ 中socket recv() 的问题

同样是在写c++的server,socket需要recv(),用char[] buffer存储读取的字节。

char buffer[BUFFER_SIZE];

n = recv(clntSocket, buffer, BUFFER_SIZE, 0)

这里的buffer在每次读取之前必须清空!必须清空!必须清空!必须清空!必须清空!必须清空!必须清空!

因为读取的时候不一定填满BUFFER_SIZE,举例来说,如果只读了10,那么下次再读取5,剩下的10 - 5 = 5就是脏数据。所以导致时而能过test case时而不能过。

正确做法是,在n = recv()之前,先:

memset(buffer, 0, BUFFER_SIZE);



找这个bug找了半天啊啊啊啊啊啊啊!

你可能感兴趣的:(c++)