gpt4 book ai didi

c - getsockopt 返回负 mss(在 CLion 上)

转载 作者:行者123 更新时间:2023-11-30 15:05:39 30 4
gpt4 key购买 nike

我遇到了一个问题,当我使用函数 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);
}

谢谢

编辑

我忘记准确地说我正在使用 cygwin 和 Clion 在 Windows 上运行代码。

我更改了代码,现在 tailleS 的类型为 socklen_t,并使用 printf("Taille maximale d'un segment = %u\n", tailleS);结果是Taille maximale d'un segment = 0

所以问题仍然是一样的,即使 getsockopt 正在工作,我也没有得到正确的值。

最佳答案

您的 tailleS 变量必须是 socklen_t 类型,它在大多数平台上解析为无符号值 - 但是,您可以使用带符号的值整数。这会混淆值。

打印该值应使用 %u 格式说明符来告诉 printf 该变量是无符号的。

最后一句话:您似乎知道您检索的不是 MTU,而是 TCP 段大小,这是不同的东西(接近,但仍然不同)

关于c - getsockopt 返回负 mss(在 CLion 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39734618/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com