当前位置:首页 » 编程语言 » java解析报文

java解析报文

发布时间: 2022-08-11 05:13:15

‘壹’ 如何实现java解析网络协议报文(类似Wireshark那样,或者有没有开源的包供调用)

从http://netresearch.ics.uci.e/kfujii/Jpcap/doc/index.html 找到JPcap。JPcap 是一个能够捕获、发送网络数据包的Java 类库包。这个包用到了LibPcap 和原始套接字API。

‘贰’ java 解析数据报文

数据报文有很多协议的
你要分析的那种?
其实那种都大同小异
用DatagramSocket类和DatagramPacket类
socket建立连接
packet取得数据报
然后对不同的类型进行分析咯

‘叁’ JAVA解析发送tcp ip报文

JAVA 写一个SOCKET 服务器,接收、处理单片机递交上来的数据

通过文字输入流,直接可以当字符处理的。也很方便输出返馈。

‘肆’ heapbuffer报文java怎么解析

heap buffer 和 direct buffer区别

在Java的NIO中,我们一般采用ByteBuffer缓冲区来传输数据,一般情况下我们创建Buffer对象是通过ByteBuffer的两个静态方法:

ByteBuffer.allocate(int capacity);
ByteBuffer.wrap(byte[] array);

查看JDK的NIO的源代码关于这两个部分:

/**allocate()函数的源码**/
public static ByteBuffer allocate(int capacity) {
if (capacity < 0)
throw new IllegalArgumentException();
return new HeapByteBuffer(capacity, capacity);
}

/**wrap()函数的源码**/
public static ByteBuffer wrap(byte[] array) {
return wrap(array, 0, array.length);
}
//
public static ByteBuffer wrap(byte[] array,
int offset, int length)
{
try {
return new HeapByteBuffer(array, offset, length);
} catch (IllegalArgumentException x) {
throw new IndexOutOfBoundsException();
}
}

我们可以很清楚的发现,这两个方法都是实例化HeapByteBuffer来创建的ByteBuffer对象,也就是heap buffer. 其实除了heap buffer以外还有一种buffer,叫做direct buffer。我们也可以创建这一种buffer,通过ByteBuffer.allocateDirect(int capacity)方法,查看JDK源码如下:

public static ByteBuffer allocateDirect(int capacity) {
return new DirectByteBuffer(capacity);
}

我们发现该函数调用的是DirectByteBuffer(capacity)这个类,这个类就是创建了direct buffer。

‘伍’ 如何实现java解析网络协议报文

普通参数:
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

文件参数:
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

参数实体的最后一行是: --加上boundary加上--,最后换行,这里的 格式即为: --OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp--。

模拟文件上传请求
public static void uploadFile(String fileName) {
try {
// 换行符
final String newLine = "\r\n";
final String boundaryPrefix = "--";
// 定义数据分隔线
String BOUNDARY = "========7d4a6d158c9";
// 服务器的域名
URL url = new URL("www.myhost.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置为POST情
conn.setRequestMethod("POST");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
// 设置请求头参数
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("Charsert", "UTF-8");
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
OutputStream out = new DataOutputStream(conn.getOutputStream());
// 上传文件
File file = new File(fileName);
StringBuilder sb = new StringBuilder();
sb.append(boundaryPrefix);
sb.append(BOUNDARY);
sb.append(newLine);
// 文件参数,photo参数名可以随意修改
sb.append("Content-Disposition: form-data;name=\"photo\";filename=\"" + fileName
+ "\"" + newLine);
sb.append("Content-Type:application/octet-stream");
// 参数头设置完以后需要两个换行,然后才是参数内容
sb.append(newLine);
sb.append(newLine);
// 将参数头的数据写入到输出流中
out.write(sb.toString().getBytes());
// 数据输入流,用于读取文件数据
DataInputStream in = new DataInputStream(new FileInputStream(
file));
byte[] bufferOut = new byte[1024];
int bytes = 0;
// 每次读1KB数据,并且将文件数据写入到输出流中
while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytes);
}
// 最后添加换行
out.write(newLine.getBytes());
in.close();
// 定义最后数据分隔线,即--加上BOUNDARY再加上--。
byte[] end_data = (newLine + boundaryPrefix + BOUNDARY + boundaryPrefix + newLine)
.getBytes();
// 写上结尾标识
out.write(end_data);
out.flush();
out.close();
// 定义BufferedReader输入流来读取URL的响应
// BufferedReader reader = new BufferedReader(new InputStreamReader(
// conn.getInputStream()));
// String line = null;
// while ((line = reader.readLine()) != null) {
// System.out.println(line);
// }
} catch (Exception e) {
System.out.println("发送POST请求出现异常!" + e);
e.printStackTrace();
}
}

‘陆’ java解析报文

ByteBuffer bb = ByteBuffer.wrap(data, offset, length);
if (bb.remaining() < MIN_HEADER_LENGTH) {
return this;
}

this.opCode = bb.get();
this.transactionId = bb.getInt();

按照这种节奏搞吧,这个很简单的啊,拿到BYTEBUFFER以后,一点一点的处理byte。

‘柒’ 谁能帮我做个java 报文解析类。

很简单。
#include<stdio.h>
void main()
{int m,n,p=0,i=1;
scanf("d%,%d",&m,&n);
for(i;i<=m;i++)
{p+=i;}
for(i=1;i<=n;i++)
{p+=i;}
printf("%d\n",p);
}
我大致写了下,思路很简

‘捌’ java怎么解析文本文件中的soap报文

首先,通过流的方式读取txt中soap报文字符串。第二步,通过dom4j读取soap报文字符串进行解析(常规的xml解析)

‘玖’ java xml报文解析,下面是从其它平台传过来的一个xml报文,小弟从来没涉及这块,求解析方法,求大神指点

自己去搜一个叫dom4j的东西……这是java的一个第三方工具包,用来解析xml的

‘拾’ 请问java中解析报文有什么用,我每次应聘的时候,考官都问我以前做没做过报文

报文都是按照你指定的格式来进行发送的数据,也就是说你想怎么定义,就怎么定义,比如说你看到的这些0-327630-94-18-12-205646-,那么他可能是,0协议,327630个字节数,然后指定开始的94协议,18具体的内容,所以说呢,报文是2台计算机通讯所用的协议。你只有弄懂了协议,你才能看的懂这些报文的意思,当然不可能让你手动翻译出来了。

热点内容
有哪些低配置游戏像王者荣耀 发布:2024-05-03 22:27:11 浏览:243
gp数据库库 发布:2024-05-03 22:12:43 浏览:874
压缩点点 发布:2024-05-03 22:12:33 浏览:381
有哪些编程比赛 发布:2024-05-03 22:03:45 浏览:264
怎么根据配置调整游戏分辨率 发布:2024-05-03 22:02:50 浏览:78
小鸟酱265g资源密码多少啊 发布:2024-05-03 21:32:08 浏览:653
三国战纪游戏华为帐号密码是多少 发布:2024-05-03 21:22:54 浏览:950
变频压缩机启动 发布:2024-05-03 21:17:06 浏览:436
建立云存储 发布:2024-05-03 21:04:03 浏览:76
socket编程php 发布:2024-05-03 20:12:50 浏览:209