检查 Android/Java 上的端口是否打开

2024-01-26

我想检查端口是否打开,或者服务器是否正在其上运行。
我已经以多种方式尝试过,例如“/system/bin/ping”和“InetAddress”,但如果我是对的,我无法使用这些 ping 特定端口:/

这次我用 DatagramSockets 的想法做到了,如下所示:

try { String messageStr="Hello!";
   int server_port = 25565;
   DatagramSocket s = new DatagramSocket();
   InetAddress local = InetAddress.getByName("11.11.11.11");
   int msg_length=messageStr.length();
   byte[] message = messageStr.getBytes();
   DatagramPacket p = new DatagramPacket(message, msg_length,local,server_port); 
   textView1.setText("Inet");
   s.send(p); 
   textView1.setText("Send");
} catch (Exception e) {}

我收到“Inet”,但没有“发送”消息,所以我在发送时陷入困境。我尝试获取异常消息,它是 NetworkOnMainThreadException..


您无法 ping 特定端口。 “ping”是 ICMP 回显请求。 ICMP 是一个互联网层协议,因此没有“端口”的概念。

你可以使用Socket尝试建立到该端口的 TCP 连接。如果连接成功,则说明有东西正在侦听 TCP 连接。如果无法连接,则说明在某种程度上无法访问。

你可以使用DatagramSocket尝试将数据包发送到端口。如果成功,则可能有东西正在接收数据。如果失败,则肯定出现了问题(顺便说一句,如果收到发往未对 UDP 开放的端口的 UDP 数据包,或者如果某些东西主动拒绝途中的数据包,则会发回 ICMP 错误消息)。

您必须使用以上两种方法来检查 TCP 和 UDP。

注意InetAddress默认情况下使用 ICMP 请求作为 ping,但如果它没有这样做的权限,它将转而尝试建立 TCP 连接。然而,如果它does具有生成 ICMP 数据包的权限,但无法强制其尝试 TCP 连接。因此,如果您想使用该方法,只需使用Socket.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 Android/Java 上的端口是否打开 的相关文章

随机推荐

  • 着色器使立方体的边缘倾斜?

    这个问题涉及使用着色器 可能在 Unity3D 环境中 但 Metal 或 OpenGL 都可以 以在网格最小立方体上实现圆角边缘 我希望只使用 12 个三角形的简约网格立方体 然后通过着色器 使每个块的边缘 角 稍微倾斜 其实这样可以吗带
  • Set-Cookie 标头未在 Chrome 中设置 cookie

    我正在 AJAX 调用另一个服务 API 然后该 API 应该返回一个 cookie 该 cookie 将在我的浏览器中设置 以允许我进行其余的 API 调用 然而 虽然响应标头包含 Set Cookie 标头 但实际上并未设置任何 coo
  • 是否可以同时使用带有多个预设的 Jest?

    是否可以将 Jest 与多个预设一起使用 例如 jsdom 和 react native 我想测试一个可以在 Web 和 React Native 环境中工作的 React 组件 问题是该组件可能使用 React Native 库或某些文档
  • Intellij 中的 AVD 管理器被禁用

    我正在记录这个问题和解决方案 如下 因为我第二次发现自己在这上面浪费了几个小时 解决方案 文件 gt 设置 gt 在搜索栏中输入 Android 选择 Android SDK 选择 编辑 Intellij 现在要求下载 SDK 800MB
  • Django - 媒体上传 [Errno 13] 权限被拒绝

    我在让 django 很好地处理图像上传时遇到了一些麻烦 我的脚本将根据日期创建目录 如下所示 file models FileField upload to uploads m Y 现在 如果我在上传文件夹中创建日期目录并将文件夹 chm
  • 自动布局使视图在剩余空间中居中(以编程方式)

    如何添加自动布局约束以编程方式将视图置于剩余空间的中心 参见下面的示例图片 目前 我在底部添加一个容器视图 然后将视图置于容器视图的中心 但我想知道是否有任何其他解决方案不需要使用容器视图 您需要添加一个间隔视图来执行此操作 让我们从一些观
  • 如何在 ASP.NET Core 中设置强类型配置?

    本文 http www mikesdotnetting com article 284 asp net 5 configuration and 另一篇文章 https weblog west wind com posts 2015 Jun
  • 第一次调用时 ZuulException (SendErrorFilter)

    我正在通过 Spring Cloud Spring Boot 和 Docker 构建一个应用程序 整个应用程序运行良好 我有几个微服务 每个项目都在 Docker 上运行 当我尝试通过 Zuul API 网关使用我的微服务时 我在第一次调用
  • JCS编辑磁盘辅助缓存DiskPath

    我正在开发一个带有 JCS 1 3 缓存的 Web 应用程序 我需要在运行时从 JVM 属性编辑索引磁盘辅助缓存的 DiskPath 你知道有什么方法可以做到这一点吗 我设法创建了辅助缓存对象 但我不知道如何将它与 cache ccf 中定
  • SQL 分页查询 order by

    我正在尝试编写一个查询来提取多个字段并为其分配别名 其中一个别名实际上是两个字段的总和 这实际上是我最大的问题 因为该别名是可能进行排序的 字段 之一 否则我可以删除所有别名而不会出现此问题 无论如何 我需要能够传入一个以编程方式排序的字段
  • 包含子模块的“推送部署”接收后挂钩?

    目前 我有一个post receive钩子包含 git work tree served data location git dir this bare git repo checkout f 这非常有效 直到我想包含一个子模块 它只是忽略
  • Python os.walk + 跟随符号链接

    如何让这篇文章遵循 python 2 6 中的符号链接 def load recursive self path for subdir dirs files in os walk path for file in files if file
  • 优化掉“while(1);”在 C++0x 中

    已更新 请看下文 我听说并读到 C 0x 允许编译器为以下代码片段打印 Hello include
  • 这会在全球范围内启用“use strict”吗?

    类似 但不一样 如何在全局范围内启用 ECMAScript use strict https stackoverflow com questions 4769477 how to enable ecmascript use strict g
  • 使用安装项目在安装时指定 Windows 服务名称

    目标 为了支持在一台计算机上可能有多个实例的 Windows 服务 请使用安装项目创建一个能够执行以下操作的 MSI 接收用户输入的服务名称 安装服务 从 1 开始序列化服务名称 以便在日志记录和卸载时可以使用正确的名称 我最初的希望是在
  • JS/Es6 如何合并两个数组并覆盖其对象中的值

    假设我有一个像这样的数组 let arrayOne text one value 0 text two value 0 let arrayTwo text two value 5 So arrayOne总是我想要的整个对象集 但所有值都将为
  • Selenium Chrome 窗口中的按钮不可点击

    我正在尝试使用 Selenium 和 Python 单击按钮 我需要理解的这个问题的根源是 当 Selenium 启动 Chrome 窗口时 我想单击的按钮在单击时不会执行任何操作 就像我用鼠标点击按钮一样 什么也不会发生 它似乎是页面上唯
  • 如何将 bash 输出捕获到 Mac OS X 剪贴板?

    是否可以将 bash 输出捕获到 OS X 剪贴板 The pbcopy http developer apple com Mac library documentation Darwin Reference ManPages man1 p
  • OpenJDK7 OS X 上的 file.listFiles() 在包含欧元符号的文件名上损坏

    似乎以下 file listFiles 在 OS X 上的 OpenJDK 7 上被破坏 此代码片段将打印 此文件有欧元符号 不存在 final String pathname System getProperty user home fo
  • 检查 Android/Java 上的端口是否打开

    我想检查端口是否打开 或者服务器是否正在其上运行 我已经以多种方式尝试过 例如 system bin ping 和 InetAddress 但如果我是对的 我无法使用这些 ping 特定端口 这次我用 DatagramSockets 的想法