Linux C语言 socket编程 关闭对udp checksum的检查
程序员文章站
2022-07-10 18:38:31
...
应用收包时,网卡会对udp头的checksum进行检查,当udp头的checksum不正确时,该包可能会被应用丢弃。因此在C语言的socket程序中可以加上以下内容禁止对checksum的检查从而正确收包:
int getchecksum = 0;
socklen_t option_int = sizeof(int);
int get_error = getsockopt(sock, SOL_SOCKET, SO_NO_CHECK, &getchecksum, &option_int );
int nochecksum=1;
int set_error = setsockopt(sock, SOL_SOCKET, SO_NO_CHECK, &nochecksum, sizeof(nochecksum));