Я попробовал следующий код, чтобы узнать максимальный размер сегмента в сокетах TCP и UDP. Я могу ошибаться, потому что я использую IPPROTO_TCP
и TCP_MAXSEG
для SOCK_DGRAM
, но я получаю значение и хочу знать причину.
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
perror("cant create socket");
aopt = sizeof(optval);
getsockopt(sockfd, IPPROTO_TCP, TCP_MAXSEG, (char *)&optval, &aopt);
printf("tcp max segment size is=%d\n", optval);
Выход:
tcp max segment size is=536
тогда я попробовал то же самое с сокетом UDP:
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
perror("cant create socket");
aopt = sizeof(optval);
getsockopt(sockfd, IPPROTO_TCP, TCP_MAXSEG, (char *)&optval, &aopt);
printf("udp max segment size is=%d\n", optval);
выход:
udp max segment size is=134514139