【问题标题】:Sending IP packets [closed]发送 IP 数据包 [关闭]
【发布时间】:2011-07-27 07:19:21
【问题描述】:

我迷路了。我已经在网上搜索了几天,但我找不到答案。我或多或少是一个初学者的套接字程序员,但我确实理解它。

我想做以下事情:

  1. 创建自定义数据包(从头开始,设置每个值)
  2. 发送

Java、C++ 或 C#。是否有一个易于使用的库,或者是否有一个核心类允许我这样做?我已经尝试过 Java 库 jnetpcap,但这只会给我错误,即使在运行示例并遵循 eclipse 的安装指南时也是如此。

非常感谢任何帮助!

注意:它适用于 Windows

【问题讨论】:

  • 你想知道如何设计数据包结构吗?或者你已经决定了数据包结构但不知道如何实现它
  • 您没有指定数据包的“定制”程度,但我认为您想要this
  • @SemVanmeenen 是的,这正是我所需要的!我仍然更喜欢 Java 或 C++ 而不是 C#,所以如果你有任何好的 c++ 或 java 替代品,如果没有,我会选择这个,谢谢!
  • 我建议使用 Raw Sockets 是一个相当高级的话题(大多数拥有十年使用普通 socket 经验的开发人员都不会触及)并且至少应该在您对它们有很好的理解之后使用它们普通套接字是如何工作的。

标签: c# java c++ sockets packets


【解决方案1】:

jNetPcap 是基于 WinPcap 的 API,只需安装 WinPcap 即可:)

作为替代方案,您可以尝试使用其他库,例如 Jpcap(用于 Java)和 SharpPcap(用于 C#)

【讨论】:

  • 我现在正在尝试 Jpcap,但我不确定如何将数据包发送到另一台服务器。你能帮忙吗?
  • 看看Project,这是我的项目使用Jpcap发送&抓包。
  • 我认为 Jpcap 对我有用,尽管我不确定如何真正测试数据包是否到达..
  • 只需使用 Wireshark 捕获它:)
  • 它也能嗅探传出的数据包吗?
【解决方案2】:

【讨论】:

  • 我已经研究过两者,但我认为它们不会允许我真正从头开始构建数据包。对不起,不清楚的问题
【解决方案3】:

我在 c++ 中使用了套接字,在 windows 中使用了 winsock,在 linux 中使用了套接字 bsd。

这是我找到的最好的指南 http://beej.us/guide/bgnet/output/html/multipage/index.html

编辑:Beej 的指南应有尽有:背景信息、简单示例、数据打包等高级主题和一些幽默

【讨论】:

  • Beej 指南+1,它确实包含您需要知道的一切。您也可以将其作为平装本购买。
  • Beej 的指南应有尽有:背景信息、简单示例、数据打包等高级主题和幽默
【解决方案4】:

如果你用java做的话很容易。

对于初学者。 http://download.oracle.com/javase/tutorial/networking/datagrams/clientServer.html

【讨论】:

    【解决方案5】:

    蒂姆,

    每个数据包都需要一个固定长度的标头,然后是正文和可选的尾端。固定头长的报头应该有包长度(主体长度+尾长度)、时间戳、唯一包ID(用于将大包分成多个小包)等详细信息。

    接收方总是先读取固定长度的报头,确定数据包长度,然后读取数据包的其余部分。

    您需要在每个可变长度元素(如名称等)之前附加大小。

    简单数据包结构示例:

    标头大小 - 1 字节

    发送姓名、ID、性别等详细信息

    标题

    [8] - 1 Byte //大小(姓名长度+姓名+身份证+性别)

    身体

    [5] - 1 Byte //名称长度

    [Jeeva] - N 字节

    [1000] - 1 字节 ID

    [0] - 1 字节性别(0 - 男性,1- 女性)

    注意:您需要小心 Endianess。提出更多问题以进行澄清

    【讨论】:

    • +1 和 -1 让我微笑。
    猜你喜欢
    • 2011-03-05
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 2013-05-06
    • 2021-06-05
    • 2020-01-20
    • 1970-01-01
    相关资源
    最近更新 更多