首页
学习
活动
专区
圈层
工具
发布

UDP响应
EN

Stack Overflow用户
提问于 2008-12-02 11:01:10
回答 6查看 11.1K关注 0票数 5

UDP不会发回任何ack,但它会发送任何响应吗?

我已经设置了客户端服务器UDP程序。如果我给客户端发送数据到不存在的服务器,那么客户端会收到任何响应吗?

我的假设是;

客户端-->广播服务器地址(ARP)服务器-->使用其mac地址(ARP)回复客户端客户端将数据发送到服务器(UDP)

在任何情况下,客户端都只能接收ARP响应。如果服务器存在或不存在,它将不会得到任何UDP响应?

客户端正在使用sendto函数发送数据。我们可以在sendto调用之后获得错误信息。

所以我的问题是,当客户没有得到任何响应时,这些信息是如何获得的。错误码可以从WSAGetLastError获取。

我尝试将数据发送到不存在的主机,但发送呼叫成功。根据文档,它应该失败,返回值为SOCKET_ERROR。

有什么想法吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-12-02 11:03:49

对于未到达目的地的UDP数据包,您永远不会收到错误或通知。

票数 6
EN

Stack Overflow用户

发布于 2011-09-15 14:53:43

sendto调用没有失败。数据报已发送到目的地。

数据报的接收方或途中的某个路由器可能会返回错误响应(主机无法到达、端口无法到达、超过TTL )。但是当您的系统收到sendto调用时,它将成为历史记录。有些操作系统确实提供了一种方法来找出发生这种情况的原因,通常是通过getsockopt调用。但是,由于您不能依赖于获得错误回复,因为它取决于您无法控制的网络条件,因此通常最好忽略它。

位于UDP之上的合理协议使用应答。如果你没有得到回复,那么要么是另一端没有收到你的数据报,要么是回复没有发回给你。

票数 5
EN

Stack Overflow用户

发布于 2008-12-02 11:06:53

"UDP是一种更简单的基于消息的无连接协议。在无连接协议中,不需要建立专用的端到端连接。通信是通过在单向中传输信息来实现的,从源到目的地,无需检查目的地是否还在那里,或者它是否准备接收信息。“

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/333629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档