原帖由
flw 于 2008-5-15 15:44 发表

我再强调一次:
注意语义!
你发送的到底是字符串,还是二进制数据?
对于楼主的程序, 如果输入不造成缓冲区溢出, 即输入的行小于LENGTH, 字符串和二进制数据没有区别, scanf("%s")会自动在字符串末尾添加\0, \0之后的数据对于printf无效, 而楼发送的是定长的数据, 试图接收的也是定长数据. 问题在于, recv可能接收的数据少于LENGTH就返回了. 但这不应该导致"隔行接收"的现象, 应该导致输出行数多于发送方的回车次数, 且输出会错乱. 所以, 我认为楼主应该提供完整的程序代码, 这样别人才能判断问题的所在.