我迷路了。我已经在网上搜索了几天,但我找不到答案。我或多或少是一个初学者套接字程序员,但我确实理解它。
我想做以下事情:
- 创建一个自定义数据包(从头开始,设置每个值)
- 发送
Java、C++ 或 C#。是否有一个易于使用的库,或者是否有一个核心类允许我这样做?我已经尝试过 Java 库 jnetpcap 但这只会给我错误,即使在运行示例并遵循 eclipse 的安装指南时也是如此。
任何帮助深表感谢!
注:适用于windows
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
查找所有四个示例应该相当容易。
我在 c++ 中使用了套接字,在 windows 中使用了winsock,在 linux 中使用了套接字 bsd。
这是我找到的最好的指南http://beej.us/guide/bgnet/output/html/multipage/index.html
编辑: Beej 的指南应有尽有:背景信息、简单示例、数据打包等高级主题和一些幽默
如果你用java做的话很容易。
对于初学者。http://download.oracle.com/javase/tutorial/networking/datagrams/clientServer.html
蒂姆,
每个数据包都需要一个固定长度的标头,然后是正文和可选的尾标。固定头长报头应该有包长度(正文长度+尾长度)、时间戳、唯一包ID(用于将大包分成多个小包)等详细信息。
接收方总是先读取固定长度的报头,确定数据包长度,然后读取数据包的其余部分。
您需要在每个可变长度元素(如名称等)之前附加大小。
简单数据包结构示例:
标头大小 - 1 字节
发送姓名、ID、性别等详细信息
标题
[8] - 1 字节//大小(名称长度 + 名称 + Id + 性别)
身体
[5] - 1 Byte //名称长度
[Jeeva] - N 字节
[1000] - 1 个字节 ID
[0] - 1 字节性别(0 - 男性,1- 女性)
注意:您需要小心 Endianess。询问更多问题以进行澄清