0

Java 程序在 LAN 上使用 TCP 和 UDP 完全按预期执行。然而,在 WAN 上,UDP 端,尽管客户端和服务器上的套接字都已启动并且正在发送和接收数据包,但充其量只能实现部分单工数据流。哪里是最有成效的领域来确定其原因?

4

2 回答 2

0

请记住,使用 UDP,每条消息都只是被扔到网络上。无法保证它会到达另一端,因此您必须开发算法来确定数据包何时丢失以及何时重复。无法保证总长度超过 576 字节(包括所有 IP 报头)的任何数据报都将被允许通过网络,因此您必须分割您的消息或采取措施检测更大的数据报何时失败。无法知道网络一次可以处理多少数据报,因此您必须控制发送消息的速度并知道何时放慢速度。

广域网只是一个更困难的环境:有更多的竞争流量,更慢的链接,以及对大数据报的容忍度更低。因此,您通常可以在 LAN 上逃脱的事情会导致 WAN 上出现更多错误。

因此,请考虑 UDP 是否真的是要使用的正确协议。

于 2012-02-10T22:05:56.787 回答
0

您需要在单独的线程中处理发送和接收,或者使用某种异步 IO。否则,您的应用程序将通过 WAN 连接锁定停止运行。您在 LAN 上看不到它,因为传输速度非常快。

于 2012-02-10T21:21:44.550 回答