![]() |
1
3
Paul R和EJP发现了当前的问题:实际上,假设缓冲区最初包含一个与要读取的长度相同的C字符串。只有在这种情况下
但这只是冰山一角。我接下来观察到你
观察(1)它仅在读取被信号中断的情况下(可能在读取任何字节之前,
和
(2) 在任何情况下都不会到达以下代码,直到循环体的末尾。除了被信号打断之外,还有很多原因
此外,如果实际读取的字节数少于请求的字节数,则函数返回错误的值。
还要注意,对
此外,函数赋值是无用的(虽然不是有害的)
以下是改进的
你的
但我们还没有完成。即使(事实上)正确实现了
预先排列的大小不太适合字符串等可变长度数据,但它适用于二进制数值等固定长度数据。因此,一种解决方案是将字符串作为(长度、内容)对传输。长度第一,例如
|
![]() |
2
1
两个问题:
而且,正如你已经知道的,你不应该打电话
|
|
user3699677 · C套接字编程写/读脏内存 10 年前 |