回复 #10 wishel 的帖子
谢谢wishel!找到原因了,int handle_input(ACE_HANDLE)函数里的if ( (byteCount = this->peer().recv_n(data,DATA_SIZE)) == -1)收到数据byteCount = 13,导致 data = 0;数组越界。
为什么当我把这里的DATA_SIZE改成14,byteCount就变成等于0了呢?缓冲区越大,虽然数据没填满,不是也应该可以的吗? 发送的字符串是包括后面的'\0'的,也就是13个
但是你的程序后面又补了个'\0',所以必须至少14byte空间。
补'\0'是对的,因为收到的不一定是字串,要想printf,必须补。
或者把最后一字节截断,改成data = 0;
页:
1
[2]