1

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

我想做以下事情:

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

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

任何帮助深表感谢!

注:适用于windows

4

5 回答 5

4

Java:套接字

http://download.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html

Java:原始套接字

http://www.savarese.com/software/rocksaw/

C#:TCP客户端

http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient%28v=vs.71%29.aspx

C#:原始套接字

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx

查找所有四个示例应该相当容易。

于 2011-07-27T07:24:23.393 回答
4

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

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

于 2011-07-27T07:29:11.157 回答
3

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

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

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

于 2011-07-27T07:22:21.330 回答
0

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

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

于 2011-07-27T07:30:26.887 回答
0

蒂姆,

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

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

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

简单数据包结构示例:

标头大小 - 1 字节

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

标题

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

身体

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

[Jeeva] - N 字节

[1000] - 1 个字节 ID

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

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

于 2011-07-27T07:50:55.830 回答