【发布时间】:2011-11-03 02:07:38
【问题描述】:
我正在使用 ioctl() 在套接字程序中读取缓冲区中的字符数。但是,有时,当缓冲区的填充延迟时,ioctl() 会将其误解为消息的结尾。如果我要使用 ioctl() 来了解传入消息的长度,如何避免这种情况。另外我不知道我将收到的消息的大小,因此我无法在静态缓冲区 recv() 中接收它。
谢谢, 马诺吉
【问题讨论】:
-
您在套接字上使用流或数据报吗?
我正在使用 ioctl() 在套接字程序中读取缓冲区中的字符数。但是,有时,当缓冲区的填充延迟时,ioctl() 会将其误解为消息的结尾。如果我要使用 ioctl() 来了解传入消息的长度,如何避免这种情况。另外我不知道我将收到的消息的大小,因此我无法在静态缓冲区 recv() 中接收它。
谢谢, 马诺吉
【问题讨论】:
使消息大小成为消息的一部分,最好是前导字节。即使其余消息的前 2 个字节大小。这样你就知道你必须等到 2 个读取字节被读取 - 然后读取消息的大小。
【讨论】: