我使用套接字通过wifi使用相同的路由器将两个Android平板电脑连接为网络。一个是服务器,另一个是客户端。
问题是,每次我想连接客户端和服务器平板电脑时,我都必须在客户端平板电脑中输入服务器平板电脑的IP地址。有没有办法避免这种情况?我还没弄清楚如何在联网之前将服务器IP地址发送到客户端平板电脑。
我希望有一种方法可以将这两款平板电脑联网,而无需知道服务器平板电脑的IP地址。
一个想法是让服务器平板电脑连接到用PHP编写的网站,并让网站获取IP地址并将其存储在数据库中。接下来我会让客户端平板电脑从该网站获取IP地址。然后具有服务器IP的客户端平板电脑将能够进行连接。所有这些都将避免用户必须知道IP并在每次想要连接时输入IP。
我确信其他人之前已经做过类似的事情并解决了这个问题。有什么想法吗?
答案 0 :(得分:0)
如果服务器Android无法分配固定的公共IP地址,这意味着它使用DHCP获取LAN IP,它可以从DHCP服务器请求特定的IP地址(也许您需要为路由器配置一些),这是路由器在这里。
另一种方法是使用反向地址解析协议(RARP),您可以使用该协议向交换机询问具有特定MAC地址的主机的IP地址。 MAC地址已修复为您的服务器Android手机。
这些只是理论上可行的。您需要查看要在Android手机中调用的API。
答案 1 :(得分:0)
答案 2 :(得分:0)
连接后,您可以检索套接字地址 使用新客户端
(套接字客户端= server.accept();)
来自
client.getLocalAddress().toString() //ip server
client.getRemoteSocketAddress().toString() //ip client
并将它们存储在HashMap列表中,例如:
String name=client.toString();
name=name.substring(name.indexOf("/")+1,name.indexOf(","));
List<String> index = new ArrayList<String>(list.keySet());
if(index.indexOf(name)<0)
list.put(name,client.getRemoteSocketAddress().toString());