「java拆解协议」java拆包

博主:adminadmin 2022-12-09 16:03:07 81

今天给各位分享java拆解协议的知识,其中也会对java拆包进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何实现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("");

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 实现协议装包,解包

这个包的封装都是按照具体的协议规范指定的。报文体的内容肯定有的时候会出现变化的。这个不是主要的。注意的是你封装的报文结构和别人需要的结构是一致的就可以了。

java中如何自动拆解字符串,例如:“T#2M10S0.2MS”

先遍历一遍字符串,把不是数字和点的字符全换成空格,写入一个新的String中,然后,用slpit()来分组,最后输出各个子串就可以了

怎么按照自定义协议用java解析进行远程通信

很简单的, 首先使用io框架, netty, mina 都行。

打开socket , 就可以收发数据了。

接来下选择序列化框架,这取决于你的协议类型。文本协议? 字节协议?

文本协议: 比如 json? 那就用fast-json,jackson等来讲对象序列化和反序列化。

字节协议:使用 magic-byte; java-struct之类的框架来进行序列化和反序列化。

能传输, 能序列化/反序列化。 OKK 问题全部解决。 哈哈哈

java拆解协议的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java拆包、java拆解协议的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-09,除非注明,否则均为首码项目网原创文章,转载请注明出处。