使用setsockopt()修改TCP中的结构

时间:2017-05-28 08:55:56

标签: linux networking kernel c tcp

是否可以在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评论)

0 个答案:

没有答案