2012-09-24 32 views
0

我想用java套接字连接不同网络上的两个Android设备。一台设备将充当服务器,另一台充当客户端。服务器必须发布哪个地址才能让客户端连接到它?使用Java套接字,连接到另一个网络上的其他设备的正确地址是什么?

java.net具有InetAddress类,方法getLocalHost()提供了一个带有本地主机信息(主机名,本地主机地址)的实例。如果我在我的机器上运行它,我给出的地址是192.168.1.101。这是服务器设备必须发布的地址才能让客户端设备连接到它吗?我假设没有,因为它是一个本地地址。那么,我在哪里可以得到每个设备的正确地址?

回答

1

您可以使用NetworkInterface来枚举所有网络接口。您可能还需要处理连接更改,例如从3G切换到Wifi等。通常,您的设备不保证具有全球IP地址,因此除非您只在自己的网络上运行它,并且您拥有有效的IP或已经设置了必要的NAT /端口转发等,您可能无法连接到它。

+0

我试过这种方式,它给出了与InetAddress相同的地址。 –

+1

在这种情况下,您的设备已连接到某个使用NAT的WiFi路由器。您必须为设备提供全球IP或设置路由器以转发您需要连接到Android设备的端口。然后,您将使用路由器的(全局)地址连接到您的Android服务器。总而言之,这不是一个好主意,除非是用于测试/实验。 –

相关问题