【问题标题】:How to search for responsive socket servers on a particular port (How to connect to a server given the port but not having its ip)?如何在特定端口上搜索响应式套接字服务器(如何连接到给定端口但没有其 ip 的服务器)?
【发布时间】:2019-11-07 14:15:14
【问题描述】:

通过让两台(或更多)计算机(设备)通过路由器连接,是否可以在不知道其 IP 地址的情况下连接到给定端口上的套接字服务器,或者至少获取该端口上所有服务器的列表端口(并与每个端口进行通信以查看是否是我正在寻找的端口)?

我必须补充一下,我是 java 套接字编程(以及一般的套接字编程)的初学者,并且一直使用它来初始化我的客户端服务器:

    Socket socket = new Socket(serverIP, serverPort);

我已经能够在通过无线路由器连接的两台不同计算机上的客户端和服务器之间进行通信,我正试图在两台安卓设备上实现这一点。问题是 IP 地址不仅仅是向用户询问的事情。这就是为什么我想知道如何在没有 IP 的情况下连接到我知道的端口上的服务器,或者找到在该端口上处于活动状态的所有 IP(也许尝试与每个 IP 通信,看看是否是我正在寻找的为)

【问题讨论】:

    标签: java android sockets networking


    【解决方案1】:

    我不知道如何使用 Java 套接字实现它的确切解决方案,但我的第一个想法是尝试从服务器广播特定消息,当客户端连接到同一网络时,他们可以接收此消息并他们会知道它来自哪里。 (反之亦然)

    但是,多播是一种更好的方法,因为:

    “广播效率低下,因为数据包被发送到网络中的所有节点,无论它们是否有兴趣接收通信。这可能是一种资源浪费。”见:https://www.baeldung.com/java-broadcast-multicast

    也许这个 GitHub 存储库可能对你有帮助:https://github.com/jbrucker/server-discovery

    【讨论】:

    • 这是对广播的滥用,它会中断网络上的每个主机。服务器应该订阅一个预定义的多播组,连接到网络的客户端可以向该多播组发送消息,然后服务器可以使用其当前的单播地址进行响应。
    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 2012-10-26
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2015-01-16
    相关资源
    最近更新 更多