可以使用recvmsg()来获取每个传入数据包的IP_TOS字段,或者只显示为特定套接字设置的IP_TOS值.如果没有,是否有人知道获得每个传入数据包的IP_TOS值的解决方案.我正在使用UDP应用程序,因此无法像应用程序一样查看应用程序层的IP_TOS字段.谢谢.
添加我到目前为止编写的代码,有助于:
struct msghdr msg;
struct iovec iov[1];
memset(&msg, '\0', sizeof(msg));
msg.msg_iov = iov;
msg.msg_iovlen = 1;
iov[0].iov_base = (char *) &pkt;
iov[0].iov_len = sizeof(pkt);
struct cmsghdr cmsgcmsg[1];
msg.msg_control = cmsgcmsg;
msg.msg_controllen = sizeof(struct cmsghdr);
nRet = recvmsg(udpSocket, &msg, 0);
if (nRet > 0) {
struct cmsghdr *cmsg;
for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL; cmsg = CMSG_NXTHDR(&msg,cmsg)) {
if ((cmsg->cmsg_level == IPPROTO_IP) && (cmsg->cmsg_type == IP_TOS) &&
(cmsg->cmsg_len) ){
int tos = *(uint8_t *)CMSG_DATA(cmsg);
int isecn = ((tos & …Run Code Online (Sandbox Code Playgroud)