我知道我可以通过cat/proc/sys/net/core/wmem_max来获取套接字上SO_SNDBUF的最大大小,但是有没有一种简单的方法可以在C中查询这个值,而不需要通过开启感觉的步骤该文件,阅读,并转换为一个整数?在外壳查询C中的最大套接字发送缓冲区大小?
1
A
回答
2
要获得net.ipv4.tcp_wmem的sysctl的价值,你需要分析它表示的sysctl/proc文件的(真的有在Linux上没有更好的办法,以及sysctl系统调用早已被弃用)。
喜欢的东西:
unsigned long wmem_min,wmem_default,wmem_max;
FILE *f = fopen("/proc/sys/net/ipv4/tcp_wmem", "r");
if(f == NULL)
fail();
if(fscanf(f, "%lu %lu %lu", &wmem_min,&wmem_default,&wmem_max) != 3)
fail();
fclose(f);
... use wmem_max
某个特定端口,你可以用
socklen_t optlen;
int send_buf, rc;
optlen = sizeof(send_buf);
//if getsockopt is successful, send_buf will hold the buffer size
rc = getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &send_buf, &optlen);
0
你们能不能调用的sysctl命令(使用系统()或POPEN/pclose函数())来获取这些信息......至少避免了打开一个文件,但可能相当于在整体的丑陋:
system("sysctl -n net.ipv4.tcp_wmem");
相关问题
- 1. C++套接字缓冲区大小
- 2. 设置接收和发送缓冲区的套接字缓冲区大小
- 3. 套接字接收缓冲区大小
- 4. iPhone的最大套接字缓冲区大小
- 5. 通过套接字发送文件 - 缓冲区大小
- 6. C#通过套接字和TCP发送巨大和小的数据缓冲区
- 7. 缓冲区大小在c + +套接字连接
- 8. Winsock发送recv缓冲区大小
- 9. C Windows缓冲区大小
- 10. 接受的套接字的设置缓冲区大小
- 11. Emacs ansi-term最大缓冲区大小?
- 12. ObjectOutputStream最大缓冲区大小
- 13. tcp/ip套接字的接收缓冲区大小
- 14. Linux套接字缓冲数据大小
- 15. C中的缓冲区大小
- 16. 为什么接收的缓冲区大小比原来通过套接字发送的大?
- 17. Python的套接字客户端recv(缓冲区大小)
- 18. 套接字和文件建议的缓冲区大小
- 19. 套接字编程的缓冲区大小是多少?
- 20. C - 通过TCP发送缓冲区的合适大小
- 21. 有没有办法减少套接字发送缓冲区大小的最小下限?
- 22. 套接字缓冲区大小:优点和缺点更大或更小
- 23. C#套接字编程 - 如何确定接收缓冲区的大小
- 24. execv的缓冲区大小
- 25. 如何配置阿卡发送/接收缓冲区大小和最大帧大小
- 26. MPI发送和接收挂起的缓冲区大小大于64kb
- 27. Android最佳缓冲区大小
- 28. C#发送/接收字节大小的问题(套接字)
- 29. 查询在linux上的套接字上发送缓冲区的使用情况
- 30. QSqlQuery缓冲区大小
据我所知这是唯一的方式获得当前剩余的缓冲区。 – 2012-04-02 17:20:30