我是靠谱客的博主 迷路铃铛,最近开发中收集的这篇文章主要介绍java基于TCP客户端的json报文通讯,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.java中json数据对象的创建

这里用到的是net.sf.json.JSONObject,put(Object,Object)可以简单的形成json树


JSONObject json = new JSONObject();
JSONObject object = new JSONObject();
json.put("inter_mark", new String("SingleCheck".getBytes("GBK"), "UTF-8"));
json.put("user_code", new String("l89798990".getBytes("GBK"), "UTF-8"));
object.put("head", json);
object.put("name", new String("name".getBytes("GBK"), "UTF-8"));

2.socket客户端的创建


Socket socket = new Socket("ip", port);
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream);

这里建立了socket客户端,并调用了socket获取输出流的方法,用到字符输出流,可以直接将字符传入而输出,但注意要冲刷缓冲区,防止出现字符停留在缓冲区中的情况。补充:字符流拥有缓冲区而字节流没有缓冲区(缓冲区在内存中),需要的话自己设置。(对于文本形式的文件或者报文建议用字符流读取,而对于音频等其他文件需要用字节流,不确定的也建议用字节流)。

3.报文发送

直接调用printerWrite的print方法,传入jsonObject即可,传输代码写完后记得调用socket的shutdownOutput方法,此话api中的解释:此套接字的输入流置于流的末尾,个人理解忽略之后传输的数据,但socket连接并不会关闭,防止需要时再次建立连接

4.响应报文接收


BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String info = "";
String temp = null;
while ((temp = bufferedReader.readLine()) != null) {
info += temp;
System.out.println("客户端接收服务端发送信息:" + Unicode2GBK(info));
}
socket.shutdownInput();
inputStream.close();
printWriter.close();
outputStream.close();
socket.close();

同上此处用字符输入流读取响应,按行读取,同样记得关流,此处用到了一个Unicode2GBK方法下面会列出,作用是将此处收到的unicode编码报文转换为gbk,接着记得关掉所有的流,释放资源,关流要遵循由外到内的规则,最终记得关闭socket,此处省略io异常的catch块,内部直接将对象置为空。

附编码转换代码:

public static String Unicode2GBK(String dataStr) {
int index = 0;
StringBuffer buffer = new StringBuffer();
int li_len = dataStr.length();
while (index < li_len) {
if (index >= li_len - 1
|| !"\u".equals(dataStr.substring(index, index + 2))) {
buffer.append(dataStr.charAt(index));
index++;
continue;
}
String charStr = "";
charStr = dataStr.substring(index + 2, index + 6);
char letter = (char) Integer.parseInt(charStr, 16);
buffer.append(letter);
index += 6;
}
return buffer.toString();
}

一篇简单的socket客户端代码,欢迎看到的朋友提问或指正,本人一定洗耳恭听,有任何问题一定尽力解决。

最后

以上就是迷路铃铛为你收集整理的java基于TCP客户端的json报文通讯的全部内容,希望文章能够帮你解决java基于TCP客户端的json报文通讯所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部