2011-11-14 287 views
0

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

为什么会出现这种情况?

+1

UDP不'连接'任何东西。你的意思是'发送'或'接收'。 – EJP

+0

我编辑了我的帖子,添加了一些可以帮助你理解事物的信息。 –

回答

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,Port}对中 - 就像电话号码和区号。

也...

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

+0

我的笔记本电脑现在拥有相同的IP权限,防火墙现在已被禁用,但数据仍未到达。有任何想法吗? – Chris

+0

给予笔记本电脑不同的IP首先 - 他们不应该有相同的。我很惊讶他们甚至会互相交谈,或被允许在网络上使用相同的IP。如果他们仍然不会彼此交谈,那么你可能应该折腾一些代码让人们看看。也许你没有使用INADDR_ANY来接受来自所有接口或类似的信息。 “我的笔记本电脑现在都拥有相同的知识产权” –

+0

“ *这就是问题所在。*为什么笔记本电脑A在发送给它的IP地址是自己的东西时,将任何东西放在B线上? – EJP

0

这可能是你正在监听本地主机(127.0.0.1),并且不接受其他流量。使用通配符地址。

使用netstat -npu检查服务器。

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

+0

wireshark在关闭停止的防火墙后显示该端口无法访问。虽然 – Chris

+0

好了,现在检查其他的可能性,但仍然没有收到客户端的任何东西.. –

+0

我使用htonl(INADDR_ANY)作为通配符 – Chris

0

在笔记本电脑上检查防火墙......大部分时间充当垃圾运输。

相关问题