Tag: 网络协议

高效解码二进制和文本结构(数据包)

背景 有一个名为Wireshark的着名工具。 我已经使用了很多年了。 这很棒,但性能是问题所在。 通用使用场景包括若干数据准备步骤,以便提取稍后要分析的数据子集。 如果没有这一步,则需要几分钟才能进行过滤(Wireshark旁边的大痕迹无法使用)。 实际的想法是创建一个更快,更平行,更高效的更好的解决方案,用作数据聚合器/存储。 要求 实际要求是使用现代硬件提供的所有电源。 我应该说有一个不同类型的优化空间,我希望我在上层做得很好,但技术是现在的主要问题。 根据目前的设计,有几种类型的包解码器(解剖器): 交互式解码器 :解码逻辑可以在运行时轻松更改。 这种方法对协议开发人员非常有用 – 解码速度并不重要,但灵活性和快速结果更为重要 可嵌入的解码器 :可以用作库。这种类型应该具有良好的性能,并且足够灵活,可以使用所有可用的CPU和内核 解码器即服务 :可以通过干净的API访问。 这种类型应提供最佳的品种性能和效率 结果 我目前的解决方案是基于JVM的解码器。 实际的想法是重用代码,消除移植等,但仍然具有良好的效率。 交互式解码器 :在Groovy上实现 可嵌入解码器 :在Java上实现 解码器即服务 :Tomcat +优化+可嵌入解码器包装到servlet中(二进制输入,XML输出) 需要解决的问题 Groovy提供了强大的function和一切,但在这种特殊情况下运气表现力 将协议解码为树结构是一个死胡同 – 太多的资源被浪费掉了 内存消耗有点难以控制。 我做了几次优化但仍不满意分析结果 带有各种铃声和口哨声的Tomcat仍然会引入很多开销(主要是连接处理) 我在各地使用JVM做得对吗? 您是否看到了实现最初目标的任何其他优秀和优雅的方法:获得易于编写的高度可扩展且高效的协议解码器? 协议,结果格式等不固定。

Java和CANopen

背景 我需要在笔记本电脑上创建一个Java程序来接收/发送CANopen消息。 选择RJ45作为网络的物理介质。 我是CANopen和Java通信编程的新手。 请原谅我,如果我似乎不知情。 事实是,我已经阅读了很多,但我仍然不知道如何开始。 问题 除了将PC连接到CANbus网络之外,CAN-PC适配器还能做什么? 是否可以在没有CAN-PC适配器的情况下将笔记本电脑连接到CANbus网络? 如果需要CAN-PC适配器,我应该使用哪种适配器? PCMCIA,并行,串口,USB等? 如何开始编写java程序来监听/写入CANopen消息? 我应该使用哪些库? 我需要创建自己的驱动程序吗? 我的程序应该处理心跳监控,错误检测等吗? 或者这些是由CAN-PC适配器照顾的吗? 如何从CANbus节点检索特定信息? 如何创建EDS文件和对象字典? 每个节点都需要它们吗? 如何在不购买CAN硬件的情况下模拟CAN网络来测试我的Java程序?

如何(简单地)从java生成POST http请求来进行文件上传

我想使用POST http事件从java application / applet上传文件。 我想避免使用SE中未包含的任何库,除非没有其他(可行的)选项。 到目前为止,我只提出了非常简单的解决方案。 – 创建字符串(缓冲区)并用兼容的标题填充它( http://www.ietf.org/rfc/rfc1867.txt ) – 打开与服务器URL.openConnection()的连接,并将此文件的内容写入OutputStream。 我还需要手动将二进制文件转换为POST事件。 我希望有更好,更简单的方法来做到这一点?