在套接字编程中使用套接字选项是为了什么,比如setsockopt()和getsockopt()?
发布于 2010-11-21 00:07:28
例如,您想要设置或知道接收缓冲区大小
1)
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)重用地址
int on = 1;
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0)发布于 2010-11-21 00:09:48
对于many不同的事情,包括改变发送和接收缓冲区的大小,超时的长度,多播,保持连接活跃,禁用纳格尔算法等。
根据要与之交互的网络层,有不同级别的选项:套接字本身、IP、TCP等等。
发布于 2010-11-21 00:39:31
如前所述,它们用于设置/获取套接字的各种选项。
例如,如果您正在测试一个崩溃的服务器应用程序,那么在内核允许您重用端口之前,您不必等待特定的分钟数,从而避免出现“地址已在使用”的错误消息。如果使用SO_REUSEADDR选项,让其他套接字绑定到同一端口,则可以避免这种情况,除非已经绑定了活动监听器。
您还可以通过在linux机器上使用TCP_INFO来检索有关套接字的数据,例如丢失数据包/重新传输的数量等。
基本上,您可以配置所有的精细设置。
用于setsockopt(2)和getsockopt(2)的选项。
https://stackoverflow.com/questions/4233598
复制相似问题