在C ++中,我要等多少时间才能使套接字的发送缓冲区为空?

穆罕默德·贾法尔(Mohamad-Jaafar)

我试图限制仅一个接收器的网络。

首先,我通过以下方法检测SO_SNDBUF的大小:

getsockopt(sendsockfd, SOL_SOCKET, SO_SNDBUF, &sndBufferSize, &sbsLen);

然后,我继续填充该缓冲区,直到它被完全填满为止:

if (sndBufferSize - NbBytesInBuffer >= HEADER){
    memcpy (sendBuffer + NbBytesInBuffer, &buf_header, HEADER);
    NbBytesInBuffer +=HEADER;
}

当然,我只提到代码的相关部分。

最后,当缓冲区已满时,写入套接字。

if (sndBufferSize - NbBytesInBuffer < HEADER)
sentSize = write(sendsockfd,sendBuffer,NbBytesInBuffer);
...

我的问题尚未提及。在我想重新发送数据之前,以上所有东西都运行良好。

现在,因为我想发送最大可能的速率,所以我不得不等待的时间尽可能短。(即我必须立即重新发送,发送缓冲区为空)。

如何检测所需的时间write()以重新清空发送缓冲区(以最佳方式)?

附言:请不要告诉我等待任意时间(例如usleep(10000);

迈克·德西蒙

如果要以最大速率发送,则write默认情况下应在需要时阻止。一旦write返回,就由您完成,您sendBuffer可以将下一个数据块放入其中,然后write再次调用

select如果您将套接字设置为非阻塞状态,则只需要弄乱就可以了,在这种情况下,您要等待的条件是套接字是可写的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过C中的套接字一起发送两个缓冲区?

来自分类Dev

如何在套接字流缓冲区中添加空终止。C

来自分类Dev

C ++ Google协议缓冲区打开http套接字

来自分类Dev

从C ++中的缓冲区提取IP地址(Linux套接字)

来自分类Dev

c套接字sendmsg MSG_DONTWAIT-缓冲区重用

来自分类Dev

C服务器套接字的读取功能写入脏缓冲区

来自分类Dev

在C中为未知(大小)结构创建缓冲区

来自分类Dev

为C中的缓冲区(结构类型)分配内存

来自分类Dev

为什么会出现缓冲区溢出?我怎样才能避免它?[C++]

来自分类Dev

C#.NET套接字tcp begin / endreceive客户端:endreceive读取所有字节,但是在beginreceive中,缓冲区大小自行更改

来自分类Dev

(C套接字编程)将服务器的send()调用与结束于同一客户端recv()缓冲区中的服务器分开

来自分类Dev

通过C中的套接字发送空终止符

来自分类Dev

C ++中的缓冲区大小

来自分类Dev

C ++中的位缓冲区

来自分类Dev

在C ++中解析协议缓冲区

来自分类Dev

C中的缓冲区溢出与获取

来自分类Dev

在C#中同步缓冲区

来自分类Dev

C中自发的缓冲区溢出

来自分类Dev

Windows中套接字发送缓冲区的大小是多少?

来自分类Dev

通过线程之间的环形(循环)缓冲区发送消息(在 C 中)

来自分类Dev

用C#BinaryWriter缓冲区发送段?

来自分类Dev

Stringstream缓冲区在Objective-C ++中不会为空

来自分类Dev

超大缓冲区中的C字符串空终止符

来自分类Dev

在 C++ 中清除空输入缓冲区的安全操作

来自分类Dev

C ++刷新缓冲区

来自分类Dev

C缓冲区指针

来自分类Dev

缓冲区溢出 C

来自分类Dev

Java中通过套接字传输文件的缓冲区大小应该是多少

来自分类Dev

c + +和DX11中的动态常量缓冲区或动态顶点缓冲区

Related 相关文章

  1. 1

    如何通过C中的套接字一起发送两个缓冲区?

  2. 2

    如何在套接字流缓冲区中添加空终止。C

  3. 3

    C ++ Google协议缓冲区打开http套接字

  4. 4

    从C ++中的缓冲区提取IP地址(Linux套接字)

  5. 5

    c套接字sendmsg MSG_DONTWAIT-缓冲区重用

  6. 6

    C服务器套接字的读取功能写入脏缓冲区

  7. 7

    在C中为未知(大小)结构创建缓冲区

  8. 8

    为C中的缓冲区(结构类型)分配内存

  9. 9

    为什么会出现缓冲区溢出?我怎样才能避免它?[C++]

  10. 10

    C#.NET套接字tcp begin / endreceive客户端:endreceive读取所有字节,但是在beginreceive中,缓冲区大小自行更改

  11. 11

    (C套接字编程)将服务器的send()调用与结束于同一客户端recv()缓冲区中的服务器分开

  12. 12

    通过C中的套接字发送空终止符

  13. 13

    C ++中的缓冲区大小

  14. 14

    C ++中的位缓冲区

  15. 15

    在C ++中解析协议缓冲区

  16. 16

    C中的缓冲区溢出与获取

  17. 17

    在C#中同步缓冲区

  18. 18

    C中自发的缓冲区溢出

  19. 19

    Windows中套接字发送缓冲区的大小是多少?

  20. 20

    通过线程之间的环形(循环)缓冲区发送消息(在 C 中)

  21. 21

    用C#BinaryWriter缓冲区发送段?

  22. 22

    Stringstream缓冲区在Objective-C ++中不会为空

  23. 23

    超大缓冲区中的C字符串空终止符

  24. 24

    在 C++ 中清除空输入缓冲区的安全操作

  25. 25

    C ++刷新缓冲区

  26. 26

    C缓冲区指针

  27. 27

    缓冲区溢出 C

  28. 28

    Java中通过套接字传输文件的缓冲区大小应该是多少

  29. 29

    c + +和DX11中的动态常量缓冲区或动态顶点缓冲区

热门标签

归档