ioctl() 用于 C 中的套接字编程

Posted

技术标签:

【中文标题】ioctl() 用于 C 中的套接字编程【英文标题】:ioctl() for socket programming in C 【发布时间】:2011-11-03 02:07:38 【问题描述】:

我正在使用 ioctl() 在套接字程序中读取缓冲区中的字符数。但是,有时,当缓冲区的填充延迟时,ioctl() 会将其误解为消息的结尾。如果我要使用 ioctl() 来了解传入消息的长度,如何避免这种情况。另外我不知道我将收到的消息的大小,因此我无法在静态缓冲区 recv() 中接收它。

谢谢, 马诺吉

【问题讨论】:

您在套接字上使用流或数据报吗? 【参考方案1】:

使消息大小成为消息的一部分,最好是前导字节。即使其余消息的前 2 个字节大小。这样你就知道你必须等到 2 个读取字节被读取 - 然后读取消息的大小。

【讨论】:

以上是关于ioctl() 用于 C 中的套接字编程的主要内容,如果未能解决你的问题,请参考以下文章

c语言套接字编程中的listen()队列长度?

网络编程时,套接口ioctl函数的参数struct ifreq定义在哪个文件里

(10)Linux 网络编程之ioctl函数

用于 UDP 客户端的 Windows C 套接字编程

c_cpp C语言中的套接字编程教程

C 中的 Windows 套接字编程