2011-07-27 81 views
3

我迷路了。我一直在网上搜索了好几天,但我找不到答案。我或多或少是一个初学者套接字程序员,但我确实了解它。发送IP数据包

我想要做以下的事情:

  1. 创建一个自定义数据包(从零做起,设定每个值)
  2. 发送

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

任何帮助非常感谢!

注:这是针对Windows

+1

您是否想知道如何设计数据包结构?或者你已经决定了数据包的结构,但不知道如何实现它 – Jeeva

+1

你不指定如何'定制'你的数据包,但我想你想[this](http://stackoverflow.com/questions/3964013 /如何-发送-原始以太网数据包与-C)。 –

+0

@SemVanmeenen是的,这正是我需要的!我仍然更喜欢Java或C++而不是C#,所以如果你有任何C++或者Java替代品,那么我会为此付出努力,谢谢! –

回答

3

jNetPcap是基于WinPcap的一个API,只需要安装WinPcap的,它会工作:)

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

+0

我正在尝试Jpcap,但我不知道如何将数据包发送到另一台服务器。你能帮忙吗? –

+0

看看[Project](http://www.mediafire.com/?lighjmnm4ez),这是我使用Jpcap发送和捕获数据包的项目。 –

+0

我认为Jpcap为我工作,即使我不知道如何才能真正测试数据包是否到达。 –

3

我已经在Linux窗口和插座BSD用winsock用于C++的插座。

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

编辑: Beej指南拥有一切:背景资料,简单的例子,先进的主题,如数据打包和一些幽默

+0

+1为Beej的指南,它真的有你需要知道的一切。你也可以把它作为平装本购买。 – Valmond

+0

Beej的指南有一切:背景信息,简单的例子,数据包装和一些幽默等高级主题 – Leon

4
+0

我已经看过两个,但我不认为他们会允许我真的从头开始构建数据包。对不清楚的问题 –

0

添,

每个分组需要固定长度的报头,接着通过身体和任选的拖车。固定的头部长度头部应该具有诸如分组长度(体长+尾部长度),时间戳,唯一分组ID(用于将大分组分成多个小分组)的细节。

接收器将总是首先读取固定长度的报头并确定数据包长度并读取数据包的其余部分。

需要每可变长度的元件,如姓名等简单数据包结构的

实施例之前,将大小追加:

标题大小 - 1个字节

发送的细节,如姓名,ID,性别

部首

[8] - 1个字节//大小(名称长度+名称+编号+性别)

[5] - 1个字节//名称长度

[Jeeva] - N字节

[1000] - 1字节ID

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

注意:您需要小心Endianess。请求进一步的问题以进行澄清

+0

+1和-1让我微笑。 –