gpt4 book ai didi

c - 如何使用 TOS 设置消息优先级?

转载 作者:太空狗 更新时间:2023-10-29 11:20:00 29 4
gpt4 key购买 nike

IP header 具有服务类型 (TOS) 字段。它可用于设置有类队列规则,即 PRIO。

我测试了以下代码。

#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char**argv)
{
int listenfd, connfd, optval;
struct sockaddr_in servaddr, cliaddr;
socklen_t clilen;
pid_t childpid;
char mesg[16];

listenfd = socket(AF_INET, SOCK_STREAM, 0);

bzero(&servaddr, sizeof(servaddr));
bzero(mesg, 0, sizeof(mesg));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port = htons(32000);
bind(listenfd,(struct sockaddr *)&servaddr, sizeof(servaddr));

listen(listenfd, 1024);

for (;;)
{
clilen = sizeof(cliaddr);
connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &clilen);

if ((childpid = fork()) == 0)
{
close(listenfd);

for (;;)
{
optval = 0x28;
setsockopt(cliaddr, IPPROTO_IP, IP_TOS, &optval, sizeof(optval));
strcpy(mesg, "tos=0x28");
sendto(connfd, mesg, sizeof(mesg), 0, (struct sockaddr *)&cliaddr, sizeof(cliaddr));
sleep(2);

optval = 0x58;
strcpy(mesg, "tos=0x58");
setsockopt(cliaddr, IPPROTO_IP, IP_TOS, &optval, sizeof(optval));
sendto(connfd, mesg, sizeof(mesg), 0, (struct sockaddr *)&cliaddr, sizeof(cliaddr));
sleep(2);
}

}

close(connfd);
}
}

数据包可以发送,TOS 字段设置成功。但是我该怎么做才能使消息优先级生效呢?谢谢!

最佳答案

TOS 是给路由器的指令。除非路径中的所有路由器都同意它的含义,将其原封不动地传递给下一个路由器,并自己对其进行处理,否则它不会产生任何影响。他们呢?如果路径中没有路由器,它根本没有任何影响。

关于c - 如何使用 TOS 设置消息优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429403/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com