是否可以在TCP中修改结构的单个成员?我希望能够使用setsockopt()来更新TCP中tcp_info结构的成员。
我尝试过以下方法:
struct tcp_info info;
unsigned int optlen = sizeof(struct tcp_info);
if (getsockopt(sock, IPPROTO_TCP, TCP_INFO, &info, &optlen) < 0)
printf("Can't get data from getsockopt.\n");
info.retransmits += 10; // random member of tcp_info - as example
if (setsockopt(sock, IPPROTO_TCP, TCP_INFO, (char *) &info, optlen) < 0)
printf("Can't set data with setsockopt.\n");
对setsockopt()的调用失败(返回负值)。
我试图解决它的方式(上图),鉴于它已经有效 - 看起来并不是最佳的。是否可以从结构中修改成员值,而无需获取和更新整个结构(其所有成员)?
修改:发布为new question,以避免出现XY问题(se评论)