UDP不列入发送任何回ACK,但将它发送任何响应?

我已经建立了客户端服务器UDP程序。如果我给客户端将数据发送到不存在服务器然后将客户端收到任何响应?

我的假设是作为;

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

在任何情况下,客户端将只接收ARP响应。如果服务器的存在与否也不会得到任何UDP响应?

客户端是使用SENDTO函数来发送数据。 sendto调用后我们可以得到错误的信息。

所以我的问题是这样的信息是如何获得客户端时,没有得到任何回应。 错误代码可以是WSAGetLastError得到。

我试图将数据发送到不存在的主机和sendto调用成功了。按照文档应失败,并返回值SOCKET_ERROR。

任何想法??

有帮助吗?

解决方案

您不能接收到错误,或通知对于没有达到目的地的UDP数据包。

其他提示

sendto呼叫没有失败。数据报被发送到目的地。

的数据报的接收方或道路上的可能返回一个错误响应一些路由器(主机不可达,端口不可达,TTL超标)。但sendto通话将成为历史你的系统接收它的时间。有些操作系统提供了一个办法,找出出现这种情况,往往带有getsockopt电话。但是,因为你不能依靠反正得到一个错误的答复,因为它取决于你无法控制的网络条件下,一般最好忽略它。

纳协议层叠在UDP使用答复的顶部。如果你没有得到答复,那么无论另一端没有得到你的数据报或答复没有让回给你。

  

“UDP是一个更简单的基于消息的无连接的协议。在无连接协议,没有作出设立专用的端至端连接的努力。通信由在的一个方向上传输的信息,从源到目的地而不检查,看看是否目标仍然存在,或者如果它准备接收的信息“。

的机器到你发送报文可以与一个ICMP UDP端口不可达消息进行答复。

UDP协议在IP上实现。你UDP数据包发送到由IP地址标识的主机,而不是MAC地址。

和如指出,UDP本身不会发送回复,则必须将代码添加自己做。然后,你将需要添加代码期待的答复,如果响应丢失采取适当的措施(通常重新发送一个计时器,直到你决定的另一端是“死”),等等。

如果您需要可靠的UDP作为订货或验证,使得TCP / IP会给你看看RUDP或可靠UDP。有时候,你需要验证,但UDP和TCP的混合物可以举起的TCP可靠性造成的瓶颈。

有关大多数大规模MMO对isntance UDP和Reliablity UDP是通信和可靠性的手段。所有RUDP确实是添加TCP / IP的较小部分,以验证并订购某些消息而不是全部。

一个共同的游戏开发网络库是Raknet具有这种内置的。

RUDP http://www.javvin.com/protocolRUDP.html

使用Raknet和Python RUDP的一个例子 http://pyraknet.slowchop.com/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top