【发布时间】:2017-02-05 16:09:20
【问题描述】:
我遇到了一个问题,当我使用函数 getsockopt 获取 MSS 时,我得到了一个负数(或 0)。但是功能是成功的,套接字是正确的值hSocketService是正确的并且可以工作。
所以我得到了:
getsockopt OK
Taille maximale d'un segment = -13312
代码如下:
int tailleMsgRecu, nbreBytesRecus, finDetectee, tailleS, tailleO;
/* 7. Recherche du MTU -*-Mache pas-*-*/
tailleO=sizeof(int);
if (getsockopt(hSocketService, IPPROTO_TCP, TCP_MAXSEG, &tailleS, &tailleO) == -1)
{
printf("Erreur sur le getsockopt de la socket %d\n", errno);
exit(1);
}
else
{
printf("getsockopt OK\n");
printf("Taille maximale d'un segment = %d\n", tailleS);
}
谢谢
编辑
我忘了确切地说我是在 Windows 上使用带有 Clion 的 cygwin 运行代码。
我更改了代码,现在tailleS 的类型为socklen_t,并使用printf("Taille maximale d'un segment = %u\n", tailleS); 打印其值
结果是Taille maximale d'un segment = 0。
所以问题还是一样,即使 getsockopt 工作,我也没有得到正确的值。
【问题讨论】:
-
你在什么时候尝试这个?插座连接好了吗?
标签: c sockets clion getsockopt