我知道我可以cat / proc / sys / net / core / wmem_max在SOCKET上获得SO_SNDBUF的最大大小,但是有没有一种简单的方法可以在C中查询这个值,而不需要通过打开文件的感觉,阅读,并转换为一个整数?
windows 7上的多播套接字
如何获得UDP套接字的排队数据量?
错误:无效的http_HOST标头:\’/webapps/../gunicorn.sock\’
在windows环境中与C / C ++联网
什么原因以及如何避免,和
为了得到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);
难道你不能在shell上调用sysctl命令(使用system()或popen / pclose() )来获取这些信息…至少避免打开一个文件,但总体上可能是等价的:
system(\”sysctl -n net.ipv4.tcp_wmem\”);
总结
以上是内存溢出为你收集整理的在C中查询最大套接字发送缓冲区大小?全部内容,希望文章能够帮你解决在C中查询最大套接字发送缓冲区大小?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容