UDP无法连接到127.0.0.1以外的任何其他内容

时间:2011-11-14 18:46:49

标签: networking udp

我不太确定为什么这不起作用。我的应用程序工作正常如果客户端和服务器在同一台PC上运行127.0.0.1但它不会使用IP 82.41.108.125连接到我的其他笔记本电脑,这是该设备的IP。

为什么会发生这种情况?

3 个答案:

答案 0 :(得分:0)

可能是您正在侦听localhost(127.0.0.1)并且不接受其他流量。使用通配符地址。

使用netstat -npu检查服务器。

如果情况并非如此,则可能是防火墙问题,请与tcpdump或wireshark进行验证。

答案 1 :(得分:0)

检查笔记本电脑上的防火墙......大部分时间都充当了spoilsport。

答案 2 :(得分:0)

假设您的所有编码工作正常,您的防火墙可能会阻塞端口 - 尝试打开您运行应用程序的端口号(在客户端/服务器comptuers的防火墙选项中)。

一些可以解释事情的其他信息

联网设备使用ARP(地址解析协议)和RARP(反向地址解析协议)将IP映射到链路层(MAC)地址并返回。您的网络接口卡(插入以太网电缆的东西)将在两台计算机上都有一个唯一的MAC地址。每台PC都配置了一个IP,供更高级别的协议(网络层中的协议)使用。

如果您的程序正常工作,计算机A将知道计算机B的IP地址(并且它将与计算机A不同)。当计算机A去发送给计算机B时,假设它们是直接连接而不是通过路由器或其间的东西,计算机A的链路层将需要将计算机B的IP转换成它可以使用的MAC地址。它通过向同一子网上的所有网络PC发送广播来询问“嘿,这是你的IP!?”来做到这一点。实质上。有一个IP与广播的IP匹配的是,“是的,它是我的 - 这是我的MAC地址,所以你可以直接与我交谈。”

所以,如果两台计算机具有相同的IP,这一切都会下地狱:)不要这样做 - 给它们唯一的IP并确保计算机A传输到计算机B正在监听的相同UDP端口和IP好。通信工作在{IP,端口}对 - 就像电话号码和区号一样。

同时...

正如EJP所说 - UDP是一种无连接协议 - 计算机A只是发送到计算机B并希望计算机B正在正确地监听。如果计算机B没有正在侦听或者处理数据的状态不正确,则数据将被丢弃并丢失。计算机A不知道发生了这种情况。如果你想要可靠的通信,它将继续尝试,你将保证计算机B收到计算机A的数据,然后使用TCP - 它进行3次握手建立连接并使用确认确保数据重传时不到达另一端。