gpt4 book ai didi

c - 如何防止使用UDP数据报的进程接收自己的消息?

转载 作者:行者123 更新时间:2023-11-30 16:36:51 24 4
gpt4 key购买 nike

我正在用 C 语言编写一个带有 ACK 的发送器-接收器协议(protocol)。每当发送器发送数据包时,接收器将发送相应的 ACK,然后等待下一个数据包。问题是,由于我在同一台机器上测试所有内容(使用 127.0.0.1 作为地址),接收器将在无限循环中接收自己的 ACK。我做错了什么?

这是接收方的代码(全部在 while 循环内):

if ((recvfrom(sockfd, buff, PACKETSZ + 1, 0, (struct sockaddr *) &sndaddr, &len)) < 0) {
perror("recvfrom");
return -1;
}
fprintf(stderr, "Packet received: '%s'.\n", buff);
// Get sequence number (seqn) from the packet
char answer[PACKETSZ];
snprintf(answer, PACKETSZ, "%d-ACK", seqn);
printf("Sending '%s'\n", answer);
if (sendto(sockfd, answer, strlen(answer) + 1, 0, (struct sockaddr *) &sndaddr, sizeof(sndaddr)) < 0) {
perror("sendto");
return -1;
}

如何阻止进程接收自己发送的数据报

最佳答案

我认为在这种情况下你不能阻止套接字接收消息,而是需要使用地址参数来接收消息,并忽略来自你自己的套接字的消息。

关于c - 如何防止使用UDP数据报的进程接收自己的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48268094/

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