首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于setsockopt()和getsockopt()函数

关于setsockopt()和getsockopt()函数
EN

Stack Overflow用户
提问于 2010-11-20 23:58:02
回答 4查看 29.9K关注 0票数 5

在套接字编程中使用套接字选项是为了什么,比如setsockopt()和getsockopt()?

EN

回答 4

Stack Overflow用户

发布于 2010-11-21 00:07:28

例如,您想要设置或知道接收缓冲区大小

1)

代码语言:javascript
复制
int skt, int sndsize;
err = setsockopt(skt, SOL_SOCKET, SO_RCVBUF, (char *)&sndsize,
                                 (int)sizeof(sndsize));

err = getsockopt(skt, SOL_SOCKET, SO_RCVBUF, (char *)&sockbufsize, &size);

2)重用地址

代码语言:javascript
复制
 int on = 1;
 if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0)
票数 4
EN

Stack Overflow用户

发布于 2010-11-21 00:09:48

对于many不同的事情,包括改变发送和接收缓冲区的大小,超时的长度,多播,保持连接活跃,禁用纳格尔算法等。

根据要与之交互的网络层,有不同级别的选项:套接字本身、IP、TCP等等。

票数 2
EN

Stack Overflow用户

发布于 2010-11-21 00:39:31

如前所述,它们用于设置/获取套接字的各种选项。

例如,如果您正在测试一个崩溃的服务器应用程序,那么在内核允许您重用端口之前,您不必等待特定的分钟数,从而避免出现“地址已在使用”的错误消息。如果使用SO_REUSEADDR选项,让其他套接字绑定到同一端口,则可以避免这种情况,除非已经绑定了活动监听器。

您还可以通过在linux机器上使用TCP_INFO来检索有关套接字的数据,例如丢失数据包/重新传输的数量等。

基本上,您可以配置所有的精细设置。

用于setsockopt(2)getsockopt(2)的选项。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4233598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档