関数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);
}
ありがとう
編集
Clionでcygwinを使用してWindowsでコードを実行していることを正確に忘れていました。
コードを変更したところtailleS
、タイプsocklen_t
は になり、その値をprintf("Taille maximale d'un segment = %u\n", tailleS);
結果とともに出力するのは ですTaille maximale d'un segment = 0
。
したがって、問題は同じです。 getsockopt が機能していても、正しい値が得られません。