1.如何用java写数据包你好,java中的socket编程,要把数据最后转成byte[]来进行通信,对于你这种情况,我认为你至少有两种方法可行
1、在java中也整一个类对象,等效于你这里的struct,然后使用java中把Object转换成byte[]的方法
2、把struct里的数据按照一定的格式存成字符串,然后再把字符串转成byte[]
方法一可以参考下这个代码:
public static byte[] convertToByteArray(Object obj) throws IOException{
ObjectOutputStream os = null;
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(5000);
os = new ObjectOutputStream(new BufferedOutputStream(byteStream));
os.flush();
os.writeObject(obj);
os.flush();
byte[] sendBuf = byteStream.toByteArray();
os.close();
return sendBuf;
【数据包代码怎么写】}
2.串口通信中的数据包是什么意思,怎么解析(最好来点c代码举例下)通俗的说就是符合某通讯协议的一组二进制串或字符串 。
有些有包头及包尾,如modbus ascii,冒号表示包头,回车(0xd)表示包尾,
某些没有包头及包尾,如modbus rtu,如果时间超过3.5个字符,表示新的一桢数据包 。
数据包还真不好用c语言举例 。
这样说吧,比如一桢数据包可以这样定义:
第一字节:从站地址+第二字节:指令类型(读还是写,bool,short还是float)+第三第四字节:地址+第五第六字节:crc校验 。
可以有一个结构体与之对应:
typedef struct _protocol
{
char cStationAddr;
char cInst;
short sAddr;
short sCRC;
}PRO;
发送协议需要将结构体打包成串,接受到串后需要解包 。
就这个例子而言,解包就比较容易了,如接收缓冲区为
char cBuff[MAX_BUF_LEN];
PRO thePro;
那么,thePro.cStationAddr=cBuff[0];
同理,thePro.sAddr=(cBuff[2]
3.怎么写程序解析出以太网数据包中的IP地址具体我没有操作过 。
如果你是打算深入学习TCP/IP原理,建议你用winpcap/libpcap抓包后,根据数据包格式,自己去从中提取IP地址,抓包分析处理的例程很多 。网上还有很多根据数据包格式伪造假IP地址的数据包的代码 。找本TCP/IP编程相关的书最好不过 。
字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有两种字节顺序,根据他们所处的位置我们分别称为主机节序和网络字节序 。通常我们认为网络字节序为标准顺序,封包的时候,将主机字节序转换为网络字节序,拆包的时候要将网络字节序转换为主机字节序 。如果你是用C#之类的库做开发,应该有相应的转换函数 。
调试结合抓包软件:Wireshark或Commview或sinffer pro
4.代码和校验这是数据通信中的一个问题.也是对数据通信纠错的一种方式.这样说吧,假定对方的网卡给你发送类似10100101这样的一些封包,由于网线可能会受到磁场等干扰元素的干扰,你怎么确信你接收到的包是正确的?
显然这样要有一个校验与纠错的机制,比如对于校验,将前边所以有数字进行位求和,就是将每个bit进行相加,得到的最终结果以二进制补到包的最后,当然这里加出来的结果是4(100),也就是最终形成10100101100发送给你,如果由于信号的突变或时某种原因,将你接到的结果前8位(数据包)也按同样的方法计算校校验码,然后与8位后的结果进行比较,如果不相等,则一定是出错了!这就是校验,但我所说的是位比较的方式,显然只能校验错误,不能校验正确.也就是说相等也未必是正确的信息.但你知道了,我是以bit进行校验的,而你的文中是要求是字节进行校验的,其实没有什么区别.只不过现在网络中的小封包一般会被丢掉,而封包内不可能只有一个字节的.
- 18朵玫瑰代表什么 18朵玫瑰代表什么意思包装有讲究吗
- 面包爱情是什么意思 爱情中面包是什么意思
- 东南亚包含哪些国家 东南亚都包含哪些国家
- 怎样包饺子 怎样包饺子不破皮
- 手雷包 手雷包是什么意思
- python简单的毕业设计 Python数据分析毕业设计
- 521是什么意思红包 5210是什么意思红包
- lol新手礼包领取 lol新手礼包领取地址
- 如何成为一个大数据开发工程师 大数据开发工程师是做什么的
- 金属加工方法 金属加工方法主要包括哪两大类