java程序通过LAN使用TCP和UDP完全按预期执行。然而,在WAN的UDP端,尽管客户端和服务器上的套接字都已启动且数据包被发送和接收,但最多只能实现部分单工数据流。哪个是最富有成效的领域,以确定其原因?
答案 0 :(得分:0)
您需要在单独的线程中处理发送和接收,或者使用某种异步IO。否则你的应用程序将通过WAN连接锁定停止运行。你没有在局域网上看到它,因为传输速度非常快。
答案 1 :(得分:0)
请记住,使用UDP,每条消息都会被抛到线上。不能保证它会到达另一方,因此您必须开发算法来确定数据包何时丢失以及何时重复。无法保证任何大于576字节的数据报(包括所有IP头)都将被允许通过网络,因此您必须分割消息或采取措施来检测何时更大的数据报失败。无法知道网络可以同时处理多少数据报,因此您必须规定发送消息的速度以及何时减速。
广域网只是一个更加困难的环境:流量竞争更加激烈,链路速度更慢,对大型数据报的容忍度也更低。因此,通常可以在局域网中使用的东西会导致WAN上出现更多错误。
因此,请考虑UDP是否真的是正确使用的协议。