gpt4 book ai didi

c - 在c中通过socket函数制作可靠的UDP

转载 作者:行者123 更新时间:2023-12-02 08:55:33 26 4
gpt4 key购买 nike

我对套接字编程有这样的疑问,我无法通过阅读手册页来消除它。

在c中socket函数的声明是int socket(int domain, int type, int protocol);

Linux 手册页说,虽然类型决定了将遵循的流,但协议(protocol)号决定了所遵循的协议(protocol)。

所以我的问题是,假设我将类型参数指定为 SOCK_STREAM这是可靠的,添加 UDP 的协议(protocol)号,它会给我一个可靠的 UDP,它与 TCP 相同,但没有流量控制和拥塞控制。

不幸的是,我无法对此进行测试,因为我只有一台机器,因此不会发生丢包情况。

有人能解开这个疑惑吗?非常感谢...

最佳答案

UDP 无法变得可靠。数据包的传输是以“尽力而为”的能力完成的,但是链上的任何路由器/主机都可以随意将数据包丢弃到垃圾中,并且不会通知发送者它已经这样做了。

这并不是说您不能对发送端和接收端施加额外的语义,以期望在特定时间范围内收到数据包并说“嘿,我们在过去 X 秒内没有收到任何内容”。但这无法在协议(protocol)级别完成。 UDP 是一种“将其转储到发件箱并希望它到达那里”的协议(protocol)。

关于c - 在c中通过socket函数制作可靠的UDP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205915/

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