c++ 中socket recv() 的问题 - 小众知识

c++ 中socket recv() 的问题

2013年01月27日 14:18:05 苏内容
  标签: socket
阅读:7328

同样是在写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);



扩展阅读