近期在项目中使用原先封装的socket库时发现当长度超过1024时,接收到的字符串会有“烫烫烫”的标志出现,之前有看过大神调侃的“烫烫烫屯屯屯”,直觉地想到应该是数组的长度部分设置有问题。检查代码发现,用于接收的buffer长度为1024,而在使用socket的recv函数中也将最大长度设置为了1024,同时将buffer中的数组拷贝出去的长度也为1024,因此该字符串中没有‘\0’的结束符,打印出来未初始化栈空间的值,也就出现了著名的"手持两把锟斤拷,口中疾呼烫烫烫。脚踏千朵屯屯屯,笑看万物锘锘锘"。将recv函数中最大长度设置为1023或者将buffer的长度改为1025即可解决,这样就也有结束符,也就不会出现上述现象了。
socket接收数据长度设置记录
最新推荐文章于 2023-06-23 10:29:34 发布