我可以用 Java 进行低级网络编程吗?

2024-01-03

应用程序级消息以一系列数据包的形式通过网络发送,这些数据包在接收端组装并传递到应用程序级。
是否有可能在Java在这些单独的数据包级别上进行网络编程?
Or in Java我们只能看到“应用程序”级别的数据包? IE。由所有这些网络数据包组装而成的“大数据包”?
我尝试在谷歌上研究此事,但结果确实令人困惑。
造成混乱的原因是,一些有关 UDP 的资源似乎表明该操作是在数据包上进行的,而另一些资源则说 Java 无法在原始套接字中工作,这意味着它可以在更高的抽象级别上工作。我无法找到我正在寻找的答案。 如果是,哪个包执行此操作?


在Java中是否可以在这些单独的数据包级别上进行网络编程?

是的,但是您不太可能想要单独的数据包。

或者在Java中我们只能看到“应用程序”级别的数据包?

纯Java只能看到TCP流和UDP数据报,它们与数据包具有一对一的映射,但您无法访问UDP标头。

IE。由所有这些网络数据包组装而成的“大数据包”?

你不会收到大大小小的数据包。您读取数据并读取可用数据(最多可达缓冲区的大小)

如果是,哪个包执行此操作?

您可以使用 JPcap 查看各个数据包,但是,除非您需要每个数据包的准确时间戳或需要跟踪丢弃的数据包,否则这很少有用。

这通过 JNI 使用 winpcap (Windows) 或 libpcap (linux)。

在我见过的大多数情况下,这种方法的使用都是大量的工作却收效甚微。

从我的角度来看,提到 JNI 的答案意味着 Java 不支持它(因为你必须实际用另一种语言编写你需要的代码)

套接字、文件、GUI 组件最终都使用 JNI。根据这个定义,您不能执行任何使用 Java 中的系统调用的操作,因为操作系统不是用 Java 编写的。

我认为这对于 Java 中的功能来说不是一个有用的定义。

1)纯Java只能看到TCP流。那么UDP呢?

如果没有 libPCap,您将无法使用 Java 中的任何协议访问数据包的标头。

我认为这一点意味着没有数据包访问

并非没有任何额外的库。

2)在我见过的大多数情况下,这需要做很多工作吗?为什么。

因为它的级别非常低,而且很多你通常不必担心的细节都会暴露给你。注意:您可能不会收到数据包,因为在尝试记录它们时它们可能会被丢弃,并且您将无法再次请求它们,因此您会错过它们。

这只是一个图书馆吧?

Correct.

不起作用吗?

为什么这么说?

我想看看我需要做的事情是否可以用 Java 完成,或者应该考虑其他语言。

恕我直言,你不会发现用另一种语言更容易。

我在 jpcap 文档中读到它不能重塑流量,例如丢弃数据包等。为什么它不能这样做?

你不能强迫网络丢弃数据包,也不能欺骗内核丢弃数据包。如果您考虑一下什么是丢包,答案就相当明显了。

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

我可以用 Java 进行低级网络编程吗? 的相关文章

  • 将一种类型的对象声明为另一种类型的实例有什么好处? [复制]

    这个问题在这里已经有答案了 可能的重复 Base b2 new Child 是什么意思 表示 https stackoverflow com questions 4447924 what does base b2 new child sig
  • 如何使用 Maven Failsafe 插件运行 JUnit 5 集成测试?

    当我运行命令时 Maven Failsafe 插件找不到我的 JUnit 5 集成测试mvn clean failsafe integration test 尽管它可以找到文件 我有junit jupiter api and junit j
  • 单元测试组合服务方法

    我正在为一个类编写 junit 单元测试 该类使用以下方法实现公开的接口 public Set
  • 如何在Java中优雅地处理SIGKILL信号

    当程序收到终止信号时如何处理清理 例如 我连接到一个应用程序 希望任何第三方应用程序 我的应用程序 发送finish注销时的命令 发送该信息最好说什么finish当我的应用程序被破坏时的命令kill 9 编辑1 kill 9无法被捕获 谢谢
  • 迁移到Java 9或更高版本时是否需要切换到模块?

    我们目前正在从 Java 8 迁移到 Java 11 但是 升级我们的服务并没有我们预期的那么痛苦 我们基本上只需要更改我们的版本号build gradle文件和服务都顺利启动并运行 我们升级了库以及使用这些库的 微 服务 到目前为止没有问
  • 具有 CRUD 功能的基于 Spring Web 的管理工具

    在 PHP Symfony 世界里有一个工具叫 Sonata Adminhttps sonata project org https sonata project org 基于 AdminLTE 模板 这是一款一体化管理工具 具有登录 菜单
  • 关于Java泛型的一些问题

    假设我有以下接口和实现类 interface Foo
  • 正则表达式在 Velocity 模板中不起作用

    我在 Test java 中尝试过这个 String regex lt s br s s gt String test1 lt br gt System out println test replaceAll regex 但是当我在速度模板
  • LocalDate 减去 period 得到错误的结果

    LocalDate减去一个Period 如 28年1个月27天 得到错误的结果 但减去一个Period 只有天单位 如 10282 天 得到正确的结果 有什么需要注意的吗 public static void main String arg
  • Java 中的 ExecuteUpdate sql 语句不起作用

    我正在学习如何将 SQL 与 Java 结合使用 我已成功安装 JDBC 驱动程序 并且能够从数据库读取记录并将其打印在屏幕上 我的问题发生在尝试执行更新或插入语句时 没有任何反应 这是我的代码 问题所在的方法 public static
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • 配置jmxremote时无法正常停止tomcat

    我添加了一个jmxremotecatalina bat中的配置 set JAVA OPTS Dcom sun management jmxremote port 9004 Dcom sun management jmxremote ssl
  • JAXB 编组器无参数默认构造函数

    我想从 java 库中编组一个 java 对象 当使用 JAXB marschaller 编组 java 对象时 我遇到了一个问题 A 类没有无参数默认构造函数 我使用Java Decompiler来检查类的实现 它是这样的 public
  • Android项目中使用java获取电脑的IP地址

    我在用ksoap2 android http code google com p ksoap2 android 我需要使用java获取IP地址 这样我就不必每次都手动输入它 我所说的 IP 地址是指 例如 如果我这样做ipconfig使用命
  • android 中的 java.net.URL ..新手问题

    我是java新手 正在尝试android开发 以下代码生成 malformedURLException 有人可以帮助我识别异常吗 任何提示都会非常有帮助 package com example helloandroid import and
  • java中的预增量/后增量

    有人可以帮助我理解为什么 int i 1 int j 1 int k 1 int l 1 System out println i i System out println j j System out println k k System
  • Java 中的微分方程

    我正在尝试用java创建一个简单的SIR流行病模型模拟程序 基本上 SIR 由三个微分方程组定义 S t l t S t I t l t S t g t I t R t g t I t S 易感人群 I 感染人群 R 康复人群 l t c
  • Jackson 反序列化相当于 @JsonUnwrapped 吗?

    假设我有以下课程 public class Parent public int age JsonUnwrapped public Name name 生成 JSON age 18 first Joey last Sixpack 我如何将其反
  • 如何使用注释处理 Hibernate 和 Spring 中的连接查询?

    我正在使用 Spring 和 Hibernate 以及 MySQL 开发应用程序 我是 Hibernate 新手 完成了基本任务 现在我需要在选择查询中应用联接以使用注释从多个表中获取数据 我已经搜索过但仍然没有任何想法 这是我的数据库表和
  • 将数组值导出到 csv 文件 java

    我只需要帮助将数组元素导出到 csv 文件 我不知道我的代码有什么问题 任何帮助将不胜感激 谢谢 for int index 0 index lt cols length index FileWriter fw new FileWriter

随机推荐

  • 如何在 datagridview 中动态创建列并为其及其行分配标题?

    我正在使用 datagridview 但没有使用任何数据源 我想动态地给它分配值 创建我自己选择的列数和行数并命名它们 另外 我想将图像添加到单元格而不是数据 至于更改列文本 我们可以使用 grid Columns 0 HeaderText
  • 为什么“std::vector”的大小是 16 字节?

    我使用 memcpy 将 std vectors 的内容复制到原始数组 对于 int float double 等数据类型 它运行良好 当我开始复制布尔向量时 我遇到了一个问题 即我得到了奇怪的值 首先 我开始为浮点向量进行测试输出 std
  • EF4:LINQ 2 实体查询在 C# 中有效,但在 VB 中无效

    编辑 我在下面留下了原始问题 并提供了更多上下文和代码来重现问题 下面的简短版本包含了问题的本质 简短版本 下面的查询抛出 System NotSupportedException 无法转换类型 System Linq IOrderedQu
  • VBA 使用 format() 或 CDate() 将字符串转换为日期时出现问题

    如果以前曾问过这个问题 请为我指出正确的方向 我似乎无法用我的谷歌搜索技能找到任何有用的东西 我有以下代码 它读取这样的字符串 停电开始日期 05 10 11 23 59 EST并提取日期信息 即 05 10 11 23 59 sStart
  • JQuery 类选择器在removeClass后仍然触发

    我正在创建一个小型投票机制 通过 AJAX 发送快速数据库时间戳 一系列带有 投票 类别的按钮是投票的触发器 而下面的文本显示该特定项目有多少 投票 从单击事件运行 AJAX 方法后 我删除了 投票 类 以便该项目中不能有多个投票 然而我的
  • 为什么 clang 在 Scons 下不显示颜色输出?

    使用 Scons 构建时 我可以将其配置为使用 clang 如下所示 env CXX clang 但是 它似乎没有保留 clang 输出的颜色信息 我怎样才能让 scons 保留颜色 根据铿锵文档 http clang llvm org d
  • 使用 g++ 编译 C++ 时,“隐藏构造函数”警告是什么意思?

    使用以下代码 include
  • 如何打印 .net 中的文本文件

    如何在 vb net 中打印 txt 文件 希望不使用任何第三方 See 如何在vb net中打印批处理文件 https stackoverflow com questions 4435644 how to print batch file
  • Git 中的插入和删除是什么?

    当我运行 git 命令时git commit or git log shortstat部分输出如下所示 2 files changed 3 insertions 11 deletions 一个的含义是什么插入 or a deletion 它
  • Maven 为同一个项目生成两个不同的 WAR 文件

    我有一个 Maven Web 服务项目 由两个不同的服务类 testClass1 和 testClass2 组成 我想要为同一项目的两个类创建两个不同的 WAR 文件 目前我正在为这两个服务生成单个 WAR 文件 如何为同一个项目生成两个不
  • 用于 Java 的非阻塞 io Web 服务器/框架

    有谁知道任何用于java的node js风格的网络服务器框架 我意识到 在处理 Web 请求时具有非阻塞回调行为需要 Web 服务器级别的深入支持 我对 Node js 感兴趣 但是当我有一个最终保存数据的 Web 服务器时 我想利用 Ja
  • sed one-liner - 查找关键字周围的分隔符对

    我通常使用大型 XML 文件 并且通常通过以下方式进行字数统计 grep确认某些统计数据 例如 我想确保至少有五个实例widget通过以下方式在单个 xml 文件中 cat test xml grep ic widget 此外 我只是希望能
  • 你能通过地址比较对象是否相等吗?

    我有一个函数可以按每个属性比较对象以查看它们是否相同 但我只是想知道 通过地址比较对象而不是检查它们是否是完全相同的对象会更好吗 编辑 请注意 如果您希望函数正常工作 则不能将值 对象 传递给函数 您需要传递 可能是常量 引用或指针 如果您
  • Android 货币符号排序

    我正在使用非英语语言环境的设备 英语货币的格式如下 1 如果我有英语语言环境 我会得到欧元货币 例如 1 Using format setCurrency Currency getInstance currency return forma
  • 角度 2 生产构建后出现意外标记 <

    在构建我的 Angular 2 应用程序之后ng build prod我复制了dist我的 node js 项目中的文件夹并将基本标签修改为 现在 当我尝试在浏览器中打开时 我收到以下错误 polyfills aa13f03 bundle
  • 导入环境OpenAI Gym出错

    我正在尝试运行 OpenAI Gym 环境 但出现以下错误 import gym env gym make Breakout v0 ERROR Library Frameworks Python framework Versions 3 8
  • 如何检索距离我的范围 0.5 公里以内的帖子?

    我正在保存用户发布的帖子的坐标 我正在生成一个推送 ID 然后使用它来保存帖子数据和 geofire 坐标 我只想显示那些在 0 5 公里半径范围内的帖子 我在用GeoFire库相同 但我无法完成任务 以下是我生成推送 ID 的方法 ite
  • Typescript 实用程序“记录”和“部分”不适用于受约束的泛型

    我需要基于受约束的泛型创建一个新类型 新类型应具有与通用类型相同的键 使它们可选并将它们映射到数字 我的第一个方法是使用Partial
  • 单击蒙版时如何关闭模态窗口 extjs?

    如果我创建一个模式窗口 Ext define myWindow extend Ext Container alias widget myWindow floating true modal true listeners onMaskClic
  • 我可以用 Java 进行低级网络编程吗?

    应用程序级消息以一系列数据包的形式通过网络发送 这些数据包在接收端组装并传递到应用程序级 是否有可能在Java在这些单独的数据包级别上进行网络编程 Or in Java我们只能看到 应用程序 级别的数据包 IE 由所有这些网络数据包组装而成