Linux C语言, 如何获取socket接收缓冲区中当前数据的大小

由于程序中的一个任务处理较耗时,需要采样socket的接收缓冲区的大小
来决定是否跳出当前任务去读取socket中的数据

2个回答

read的返回值中可以获得大小,read结束之前你是没法知道对方到底发多少给你的。通常的做法,我们会在通讯的报文前加上一些控制信息,比如前4个byte存放数据大小(是否包含这4个byte自己定义)、数据是否分片、每片大小、MAC、控制字符(防止其他程序误发)等等,
你可以参考一下。

缓冲区大小?如果你的接收缓冲区接收完毕后用strlen()获取字节数应该可以,你hi试试

baidu_24014585
想翻天 回复CodesWorld:额,这样啊,那你可以把数据个数获取段放在写端,并且发送的第一个数据位要发送的字节数,在接收端判断第一个数据的大小,到时再把第一个数据去掉即可
大约 3 年之前 回复
NDestiny
CodesWorld 我就是想在读取缓冲区中的数据之前先读一下有多少数据,来决定是否退出正在执行的任务去接收缓冲区的数据
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!